SSIS - 如何在当前步骤完成之前继续控制流程?

时间:2014-06-06 20:48:16

标签: ssis

我有一个查询轮询表,以便启动计划的ETL任务。该查询为我提供了包名称和要提供给它的必需参数。我想并行执行所有这些,但由于要运行的计划任务的数量是动态的,我使用ForEach循环器迭代查询返回的每一行,并同样动态执行它们。这似乎最明显是连续的,而不是平行的。我想要发生的是控制流启动SSIS包并继续下一次迭代,启动下一个包等,而不是等待一个包完成,然后再开始下一个包。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

确切的解决方案取决于应用程序的细节,但作为一般方法,我建议将表读入一个或多个变量,并使用这些变量的值作为优先约束来相应地执行包。这将避免使用for循环并提供并行性。

另一个需要探索的解决方案是SQL Server Agent,它在大多数情况下都做得不错。

SSIS示例。让我们说我们从sql server读取任务RunTask1,RunTask2,RunTask3,RunTask4和RunTask5。如果变量的值为1,则我们将运行相应的任务,并且不会针对任何其他值运行。下图显示了如何将此数据用作优先约束(示例中的任务3):

enter image description here