【发布时间】:2021-06-21 15:05:41
【问题描述】:
我正在编写一个 SSIS 包以允许我们并行执行我们的 ssis 任务。我有一个控制系统来管理要执行的包。这些包被分组为可以同时执行的包(即不依赖于组中的任何其他包),并按这些分组排序。
我将所有包连同它们的组一起执行到我用作队列表的表中。然后,我将所有组放入一个对象中,并在 ForEach 循环中循环这些组。 在这个 FEL 中,我有 2 个序列容器。这些容器具有作用于它们的变量。我根据所需的组从队列表中获取下一个包。 Parallel Execute package
通常的行为是循环中执行的第一组运行良好,包在 SEQ0 和 SEQ1 上运行。
问题出现在下一组执行期间,其中只有一个序列容器执行,因此没有并行执行。它可以与 0 或 1 交替执行,但另一个不启动。我在“获取执行属性”存储过程中添加了一些日志记录,因为我想知道这是否在停止执行的一侧没有返回任何行,但是没有日志,所以它根本没有在该侧执行。
有人知道为什么只有一个序列容器会执行吗?
【问题讨论】:
-
我做了一个看起来可行的更改,至少在我的测试中是这样。我在两个序列容器上将“DelayValidation”属性设置为 True。一旦我确定这可以解决问题,我会提供更新。
-
只是为了鼓励你——我在 SSIS 2008 中做了一些非常相似的事情,效果非常好。
-
嗯,延迟验证似乎在 VS 中运行良好,但在通过 SSIS 目录自动运行时没有任何区别。我还将第一个“SQL - 获取执行属性”更改为延迟验证,这有所帮助,但我也看到了一些没有并行化的分组。
标签: ssis