1

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

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

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

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

提前致谢。

4

1 回答 1

4

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

可变窗口

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

脚本任务脚本屏幕

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

执行 SQL 任务常规屏幕

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

执行 SQL 任务参数屏幕

于 2013-08-19T20:34:16.070 回答