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

use*_*144 2 ssis xp-cmdshell sql-server-2008-r2

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

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

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

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

提前致谢。

jym*_*mbo 5

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

可变窗口

在任务的脚本屏幕上,确保选择mySSISVariableReadWriteVariables:

脚本任务脚本屏幕

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

执行 SQL 任务常规屏幕

确保将您的 SSIS 用户变量分配为输入参数(在本示例中我使用 OLE DB,此链接显示了如何使用其他链接来完成此操作):

执行 SQL 任务参数屏幕