我计划在SQLAgent中每隔X分钟运行一次SSIS包,如果满足某些条件,则后续执行过多的子包。我遇到的问题是,有时一些子程序包需要比运行X分钟更长的时间,这反过来意味着在所有子程序包完成之前没有其他任何东西可以运行。
这也意味着在该运行时期间运行子包的条件可能已经过去,这意味着即使原始包完成,它们也不会运行。
是否有办法允许父包的并发实例运行,即使它以前在运行?
ParentA计划每10分钟运行一次,在10:00开始,并且符合ChildA的标准。 ChildB需要在上午10:20运行,它不会遇到,所以它不会运行。 ChildA需要3个小时才能完成。
我需要在10:10开始一个新的ParentA实例,然后在10:20开始。
如果没有安排2次以上的ParentA并且必须进行一些奇特的编码,那么我怎么能这样做呢?所以不会启动子包的多个实例?
由于
答案 0 :(得分:0)
我会更改ParentA包,使其启动一次并且不会终止,但是有一系列启动子包的循环。
在PackageA中我会添加一个For循环容器,在其中我将添加一个使用SQL WAITFOR命令暂停10分钟的执行SQL任务。然后我会运行ChildA包。
我会为ChildB等重复这种模式。因为每个For循环容器是独立的,它们将独立循环。每个循环容器都会等待它的子包在循环之前完成。
您需要添加一些机制来停止循环,例如检查系统时间,计算循环次数或类似次数。此测试将在每个For循环的EvalExpression属性中进行。