簡體   English   中英

調用的目標已引發異常 - SSIS 腳本任務錯誤

[英]Exception has been thrown by the target of an invocation - SSIS Script Task Error

I have the following script task using C# to refresh the pivot table in Excel in an SSIS package. package 在 Visual Studio 以及 package 實用程序中運行良好。 但是,當我將此 package 部署到 SSIS 目錄並安排 SQL 服務器代理作業時,它在腳本任務部分失敗,並帶有非常通用的錯誤消息

調用的目標已拋出異常

我研究了其他幾個問答,但我們的情況有很大不同。

我的腳本任務代碼

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
#endregion

namespace ST_0126969a11e546b3bbde047669039ab5
{
    [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {
        public void Main()
        {
            //Dts.TaskResult = (int)ScriptResults.Success;

            ExcelRefresh(@"C:\\SSIS\\MTD.xlsx");
        }

        private void ExcelRefresh(string Filename)
        {
            object NullValue = System.Reflection.Missing.Value;

            Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
            excelApp.DisplayAlerts = false;
            Microsoft.Office.Interop.Excel.Workbook Workbook = excelApp.Workbooks.Open(
               Filename, NullValue, NullValue, NullValue, NullValue,
               NullValue, NullValue, NullValue, NullValue, NullValue,
               NullValue, NullValue, NullValue, NullValue, NullValue);
            Workbook.RefreshAll();

            Workbook.Save();
            //Workbook.SaveAs(DestinationPath, NullValue, NullValue, NullValue, NullValue, 
            // NullValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, 
            //NullValue, NullValue, NullValue, NullValue, NullValue);
            Workbook.Close(false, Filename, null);
            excelApp.Quit();
            Workbook = null;
            System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
        }
    }
}

請幫忙。

選項 A - 服務器上尚未安裝 Microsoft Office。 技術答案是“安裝和許可 Office”,但這通常不是一件好事,正如我在這里提到的https://stackoverflow.com/a/37870251/181965

選項 B - Office 已安裝,但您正在以與已安裝版本不同的位元執行 SSIS 包。 如果您安裝了 32 位版本的 Office,這是默認的,那么您需要在類似的域中運行 SSIS 包。 SQL Server 機器上 SSIS 的默認執行版本將是 64 位,因此要么使用 32 位運行時,要么重做 Office 安裝以匹配默認調用。 也在上述答案中提到

選項 C - 權限。 運行 SSIS 包的帳戶是否有權訪問位於 C:\\SSIS\\ 的文件系統 該帳戶是否對該位置具有寫入權限?

選項 D - 位置和文件是否存在?

選項 E - 執行包的帳戶是否在活動目錄中檢查了 InteractWithDesktop 位 - 假設它是一個服務帳戶

選項 F - 您在服務器上運行的 SSIS 版本與您開發的版本相同嗎?

選項 G - 一切實際上運行良好,但由於您已在 Main 中注釋掉返回代碼,因此任務失敗。

這些是我對這一切失控的最重要的想法。

“異常已被調用的目標拋出”是腳本任務在發生錯誤時拋出的一般異常。 要閱讀真正的錯誤消息,您可以在代碼中添加 try、catch 塊,如下文所述:

在查看您的代碼時,似乎由於以下原因之一引發了錯誤:

  • 服務器上缺少 Microsoft Office 互操作程序集(未安裝 office)
  • Excel文件路徑不正確

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM