0

我有一个 SSIS 包计划在 SQLAgent 中每 X 分钟运行一次,如果满足某些条件,它随后会执行过多的子包。我遇到的问题是,有时某些子包的运行时间比 X 分钟长得多,这反过来意味着在所有子包完成之前无法运行其他任何东西。

这也意味着在该运行期间,运行子包的条件可能会来来去去,这意味着即使原始包完成,它们也不会运行。

有没有办法允许父包的并发实例运行,即使它以前正在运行?

ParentA 计划每 10 分钟运行一次,在 10:00 开始运行,并且满足 ChildA 的标准。ChildB 需要在上午 10:20 运行,它没有满足所以它不运行。ChildA 需要 3 个小时才能完成。

我需要在 10:10 启动一个新的 ParentA 实例,然后在 10:20 再次启动。

如果没有安排 2+ ParentA 并且不必进行一些花哨的编码,我怎么能这样做呢?这样子包的多个实例就不会被启动?

谢谢

4

1 回答 1

0

我会更改 ParentA 包,使其启动一次并且不会终止,但有一系列启动子包的循环。

在 PackageA 中,我将添加一个 For 循环容器,在其中我将添加一个执行 SQL 任务,该任务使用 SQL WAITFOR 命令暂停 10 分钟。然后我会运行 ChildA 包。

我会为 ChildB 等重复该模式。由于每个 For 循环容器是独立的,它们将独立循环。每个单独的 Loop Container 都会在循环之前等待它的子包完成。

您需要添加一些机制来停止循环,例如检查系统时间、计算循环次数或类似的。该测试将进入每个 For 循环的 EvalExpression 属性。

于 2014-03-06T03:40:08.470 回答