从SSIS脚本任务/脚本组件返回输出参数或变量

时间:2013-08-07 15:49:18

标签: ssis sql-server-2008-r2 xp-cmdshell

是否可以从使用xp_cmdshell的存储过程调用的SSIS“脚本任务”返回输出参数?

到目前为止我找到的所有样本都显示了如何为dts包变量赋值等;并通过消息框显示它们,但我看到的每个示例都显示脚本任务只返回Dts.TaskResult =(int)ScriptResults.Success;或者Dts.TaskResult =(int)ScriptResults.Failure ...

基本上,我有一个脚本任务,它从dll调用中获取多个值,这些值按预期工作;使用消息框验证值;但我无法找出如何将这些返回到最初执行SSIS包的存储过程。

我错过了一些明显的东西吗?请提供功能代码示例&或控制流程/数据流等的屏幕截图,如何端到端地进行此操作...... E.G。:从存储过程 - >执行* .dtsx包,传递参数,包括OUTPUT参数;以及相同的存储过程如何在这种类型的调用中读取这些输出参数;当结果返回时......

提前谢谢。

1 个答案:

答案 0 :(得分:2)

我不知道是否可以将脚本任务中的值返回给您的调用存储过程,但是这是另一种方法,我会这样做并可能得到您的最终结果。创建本地SSIS变量,可以捕获脚本任务中当前显示在消息框中的值。例如,创建一个名为mySSISVariable

的文件

Variable Window

在任务的“脚本”屏幕上,确保选择mySSISVariable作为ReadWriteVariables:

Script Task Script Screen

现在在您的脚本任务中将此SSIS变量分配给您当前输出到消息框的任何内容:Dts.Variables["User::mySSISVariable"].Value = returnedValue;现在SSIS将此值存储在变量中,您可以在调用新的存储过程时使用它,在执行SQL任务中执行了调用存储过程应该对这些变量执行的任何操作(对于多个参数,请继续添加?usp_MyNewStoredProcedure ?, ?, ?

Execute SQL Task General Screen

确保将SSIS用户变量指定为输入参数(在此示例中,我使用了OLE DB,此link显示了如何使用其他人完成此操作):

Execute SQL Task Parameter Screen