【问题标题】:How to solve "Runtime error Exception has been thrown by the target of an invocation" Am I missing a DLL file?如何解决“调用的目标已引发运行时错误异常”我是否缺少 DLL 文件?
【发布时间】:2019-03-07 20:53:49
【问题描述】:

我正在做一些测试,使用Foreach loop Container 将完整的结果集从Execute SQL Task 输出到脚本任务(显示消息框)。但遇到 DTS Script task: 运行时错误。

错误信息框

我是否缺少某种 DLL 文件?

脚本

控制流

【问题讨论】:

  • 它是在脚本中引用变量的“用户”,区分大小写。应该是“User::FinalTieOut”而不是“USER::FinalTieOut”
  • 看起来问题在我发布答案之前已经解决了:) 我以前没有读过 cmets。无论如何,只需阅读我的答案的第一部分,以便下次能够检测到真正的异常。祝你好运

标签: c# sql-server ssis etl script-task


【解决方案1】:

错误信息

调用的目标抛出了异常

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

public void Main()
{
    try
    {
        string strMessage = Dts.Variables["User::FinalTieOut"].Value.ToString();
        Messagebox.Show(strMessage);
        Dts.TaskResult = (int)ScriptResults.Success;

    }
    catch(Exception ex)
    {
        Dts.Events.FireError(0,"An error occured", ex.Message,String.Empty, 0);
        Dts.TaskResult = (int)ScriptResults.Failure;
    }
}

变量名称

基于Using Variables in the Script Task - official documentation

您将现有变量添加到脚本任务编辑器中的 ReadOnlyVariables 和 ReadWriteVariables 列表,以使它们可用于自定义脚本。 请记住,变量名区分大小写。在脚本中,您可以通过 Dts 对象的 Variables 属性访问这两种类型的变量。使用 Value 属性读取和写入单个变量。脚本任务在脚本读取和修改变量值时透明地管理锁定。

只需将USER::FinalTieOut 更改为User::FinalTieOut 即可解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多