1

我有SSIS package一个脚本任务,它从Excel. 我收到以下错误,似乎找不到问题。

调用的目标已引发异常。

在 System.RuntimeMethodHandle.InvokeMethod(Object target, Object[]
arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 在 System.Reflection.RuntimeMethodInfo。在 System.RuntimeType.InvokeMember(字符串名称、BindingFlags bindingFlags、BindingFlags、Object 目标、Object[] providedArgs、ParameterModifier[] 修饰符、CultureInfo 文化中调用(Object obj、BindingFlags invokeAttr、Binder binder、Object[] 参数、CultureInfo 文化) , String[] namedParams) 在 Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()

我已将问题缩小到这两条线,我正在设置Excel应用程序。

Excel.Application xlApp;
xlApp = new Excel.ApplicationClass();

xlApp这似乎是导致错误的值的设置。

我正在使用 Visual Studio 2017。

谁能帮我解决这个问题?

4

1 回答 1

1

调用的目标已引发异常。

是发生错误时由 Script Task 抛出的一般异常

阅读真正的错误信息

要阅读主要错误消息,您可以在代码中添加 try catch 子句并使用 Dts.FireError() 方法抛出真正的异常。

public void Main()
{
    try{

        Excel.Application xlApp;
        xlApp = new Excel.ApplicationClass();

        //...rest of code here

        Dts.TaskResult = (int)ScriptResult.Success;

    }catch(Exception ex){

        Dts.FireError(0,"An error occured", ex.Message,String.Empty, 0);
        Dts.TaskResult = (int)ScriptResult.Failure;

    }


}

试图找出问题所在

  1. 尝试使用Excel.Application而不是ApplicationClass

    Excel.Application xlApp = new Excel.Application();
    
  2. 确保计算机上安装了 Microsoft Excel,并且在 GAC 中注册了互操作程序集

于 2019-04-16T17:16:06.957 回答