调用目标引发异常 - SSIS 脚本任务错误



我有以下脚本任务,使用 C# 在 SSIS 包中刷新 Excel 中的数据透视表。该包在Visual Studio和包实用程序中运行良好。但是,当我将此包部署到 SSIS 目录并计划 SQL Server 代理作业时,它在脚本任务部分失败,并显示非常通用的错误消息

调用目标引发异常

我研究了其他几个问答,但我们的情况差异很大。

我的脚本任务代码

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 Box 上 SSIS 的默认执行版本为 64 位,因此请使用 32 运行时或重做 Office 安装以匹配默认调用。在上述答复中也提到了

选项 C - 权限。运行 SSIS 包的帐户是否有权访问位于 C:\SSIS\ 的文件系统 该帐户是否具有该位置的写入权限?

选项 D - 位置和文件是否存在?

选项 E - 执行包的帐户是否在活动目录中选中了 InteractWithDesktop 位 - 假设它是一个服务帐户

选项 F - 是否在服务器上运行的 SSIS 版本与开发版本相同?

选项 G - 一切实际上运行良好,但由于您已在 Main 中注释掉返回代码,因此任务失败。

这些是我对这已经失控的首要想法。

">

调用目标已引发异常">是脚本任务在发生错误后引发的一般异常。若要阅读真正的错误消息,可以在代码中添加 try, catch 块,如以下文章中所述:

  • SSIS - 脚本任务错误:调用目标引发异常

在查看代码时,似乎由于以下原因之一而抛出错误:

  • Microsoft 服务器上缺少 Office 互操作程序集(未安装 Office)
  • Excel 文件路径不正确

最新更新