我正在写一个SSIS包。在foreach循环中是一堆任务。它有一个必须首先执行的任务,但其余任务可以按任何顺序执行。
假设我有“task1”,它必须首先在foreach循环中执行,然后其他所有内容都可以执行。
假设括号()代表容器而且 - >代表优先约束。
这是一个有效的控制流,会导致整个包完成,同时首先完成task1吗?:
foreach(task1 -> SequenceContainer( task2 task3 task4 ))
或者我必须指定
foreach ( task2 <- task1 -> task3
|
v
task4 )
另外,如果这个DOES有效,并且我有一个foreach继续下一次失败的迭代,它会在模块失败时立即跳到下一次迭代,还是会在下一次迭代之前完成所有操作迭代?
答案 0 :(得分:2)
根据我的经验,只要任务不依赖于之前的任务完成,SSIS就可以正常工作而无需流量控制。它允许系统同时工作,这可以更快。
要记住的问题是系统 同时工作。如果您的任务触及相同的表,则最终可能会出现死锁,事务等待或意外结果。
答案 1 :(得分:1)
序列容器在其所有子任务报告完成之前不会报告完成。如果您的子任务是真正独立的,那么同时运行它们是一个非常好的想法。