在 SSIS 包中将参数值传递给变量会导致运行时错误

Posted

技术标签:

【中文标题】在 SSIS 包中将参数值传递给变量会导致运行时错误【英文标题】:In SSIS package passing parameter value to variable gives runtime error 【发布时间】:2015-11-12 23:32:32 【问题描述】:

我正在尝试使用脚本任务构建包并将参数值加载到局部变量。

我创建了项目和包参数。 enter image description here

并将它们调用到脚本任务编辑器中 在脚本编辑器中,我输入了以下脚本 enter image description here 建展成功! 执行包我得到一个运行时错误

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

不幸的是,我不明白这个消息。 需要帮助!

谢谢 多夫

【问题讨论】:

脚本消息没用。使用我在此处提到的方法插入代码以显示有用的错误消息(假设您以交互方式运行)***.com/questions/33643521/…。同样根据这种调试方法,单独注释掉每一行,直到找到引发错误的行。它有助于缩小原因。 所以在你的脚本末尾加上catch (Exception ex) MessageBox.Show(ex.Message.ToString()); 【参考方案1】:

我能够重现您在上面发布的错误,看来问题出在脚本中变量的大小写上。

首先,您需要确保已将变量设置为只读或读写,您可以在脚本任务的属性中执行此操作

然后你需要更新你的变量:

应该是:

$Project::ServerName 而不是 $project::ServerName

注意 Project 和 project 的区别 - 这就是导致您的问题的原因。

【讨论】:

以上是关于在 SSIS 包中将参数值传递给变量会导致运行时错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试在其线程函数参数中将不同的值传递给 openMp 线程

如何根据环境变量将 SSIS 包运行到多个服务器?

在ssis包中的sp中传递参数问题

008_SSIS 变量赋值的几种方式

SSIS参数化映射

如何设置 SSIS 父包,使 4 个子包可以同时运行,传入不同的参数值?