运行时SSIS数据刷新

时间:2016-09-19 14:08:46

标签: sql-server ssis

我有一个SSIS包,每5分钟运行一次,以便从一个系统到另一个系统获取数据同步的消息。问题是这个过程应该运行不到5分钟,但是在高活动期间它可以运行2个小时。

问题是,当程序包正在执行其工作时,可能会创建另一条消息,并且不会被提取2小时。我们在几天内上线,我们没有设计并发操作的过程,因为有关于争用和锁定等的东西。

SSIS是否可以不断刷新它在每个循环容器中使用的工作负载,这样即使它们在计划的SSIS包启动后到达,它也会获取最新的消息?

我考虑过最大运行时间,但我认为SSIS不存在。

1 个答案:

答案 0 :(得分:0)

你可以在里面使用for循环容器和foreach循环容器。

对于每个容器,可以更新处理了行数的变量,外部容器可以监视此变量以循环,而行数> 0,即有待处理的项目,如果有外部处理过的0项,则会完成并结束包裹。

这意味着您的软件包会选择要同步的消息,处理它们,查找更多消息,处理它们等等,直到没有消息被处理完毕。

然而;我不认为刷新会让你受益,如果你有10个项目需要循环,需要3分钟,而第11个项目到达时,该项目将一直持续到下一个5分钟的时间表执行。

如果要处理2000件物品需要两个小时,作业将运行并处理2000件,那么在此过程中到货的2001件物品将在两小时五分钟后处理。

如果刷新ssis包中的列表,您可能会在5分钟后处理队列中的项目2001,但是直到2小时后处理了2000个其他项目时,您仍然无法在队列中访问它。

实际上你可能最终得到一个永无止境的工作,因为它总是刷新在队列耗尽之前到达的新记录。

如果您在队列中优先考虑,那么刷新会有所帮助。如果您需要更快地处理记录,则需要具有多个工作人员的队列(如您所标识的那样)。