Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS-如何在当前步骤完成之前使控制流继续?_Ssis - Fatal编程技术网

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

SSIS-如何在当前步骤完成之前使控制流继续?,ssis,Ssis,我有一个查询,它轮询一个表以获取要启动的计划ETL任务。该查询为我提供了包名和需要提供给它的参数。我希望并行执行所有这些任务,但由于要运行的计划任务的数量是动态的,因此我使用ForEach循环器迭代查询返回的每一行,并同样动态地执行它们。这显然是串行的,而不是并行的。我希望控制流启动SSIS包并继续下一次迭代,启动下一个包,等等,而不是等待一个包完成后再启动下一个包 有什么方法可以做到这一点吗?确切的解决方案取决于应用程序的细节,但作为一种通用方法,我建议将表读入一个或多个变量,并使用这些变量的

我有一个查询,它轮询一个表以获取要启动的计划ETL任务。该查询为我提供了包名和需要提供给它的参数。我希望并行执行所有这些任务,但由于要运行的计划任务的数量是动态的,因此我使用ForEach循环器迭代查询返回的每一行,并同样动态地执行它们。这显然是串行的,而不是并行的。我希望控制流启动SSIS包并继续下一次迭代,启动下一个包,等等,而不是等待一个包完成后再启动下一个包


有什么方法可以做到这一点吗?

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

另一个需要探索的解决方案是SQLServer代理,它在大多数情况下都做得不错

SSIS示例。假设我们将sql server中的任务读入变量RunTask1、RunTask2、RunTask3、RunTask4和RunTask5。如果变量的值为1,我们将运行相应的任务,而不会运行任何其他值。下图显示了如何将此数据用作优先约束(示例中的任务3):


使用先行约束听起来是一个有趣的选择,但我不确定我是否遵循了。如果我已将队列任务表加载到变量中,如何从precendence约束控件读取该变量?另外,这将如何提供并行性?也许你可以给我举个例子来说明你的意思….?我已经添加了一个例子。谢谢。例如,如果我有多个Task1实例(当然有不同的参数)需要并行运行该怎么办?