调用目标抛出了异常 - SSIS脚本任务错误

时间:2018-04-10 20:17:55

标签: c# sql-server c#-4.0 ssis c#-3.0

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

Exception has been thrown by the target of an invocation

我研究过其他几个Q& As,但我们的情况有很大不同。

我的脚本任务代码

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);
        }
    }
}

请帮忙。

1 个答案:

答案 0 :(得分:0)

选项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 - 执行包的帐户是否在Active Directory中选中了InteractWithDesktop位 - 假设它是服务帐户

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

选项G - 一切都运行正常,但由于您已经在Main中注释了返回代码,因此任务失败。

这些是我对这个已经失控的最重要的想法。