[英]SSIS Script Task Excel connection open: Exception has been thrown by the target of an invocation
[英]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 块,如下文所述:
在查看您的代码时,似乎由于以下原因之一引发了错误:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.