我有一个查询轮询表,以便启动计划的ETL任务。该查询为我提供了包名称和要提供给它的必需参数。我想并行执行所有这些,但由于要运行的计划任务的数量是动态的,我使用ForEach循环器迭代查询返回的每一行,并同样动态执行它们。这似乎最明显是连续的,而不是平行的。我想要发生的是控制流启动SSIS包并继续下一次迭代,启动下一个包等,而不是等待一个包完成,然后再开始下一个包。
有没有办法做到这一点?
答案 0 :(得分:0)
确切的解决方案取决于应用程序的细节,但作为一般方法,我建议将表读入一个或多个变量,并使用这些变量的值作为优先约束来相应地执行包。这将避免使用for循环并提供并行性。
另一个需要探索的解决方案是SQL Server Agent,它在大多数情况下都做得不错。
SSIS示例。让我们说我们从sql server读取任务RunTask1,RunTask2,RunTask3,RunTask4和RunTask5。如果变量的值为1,则我们将运行相应的任务,并且不会针对任何其他值运行。下图显示了如何将此数据用作优先约束(示例中的任务3):