我有一个简单的SSIS程序包,其中包含许多数据流任务,它们基本上都具有相同的作用:
我在DFT中所做的就是从源数据库和目标数据库中获取数据,在源数据库和目标数据库之间执行左外部联接,然后拆分新行和现有行,并将新行插入到目标数据库中,而仅将现有行插入在TargetDB中更新。
我的控制流中依次有大约10个DFT。完成所有DFT后,我清除并清空SourceDB。还需要注意的是,某些TargetDB上的行可能会很大(因为它已经建立),并且可以达到数十万或数百万行。
我的问题是,我有一个Windows服务,如果尚未运行此SSIS程序包,它会定期调用SQL作业来执行此SSIS程序包(每次运行需要5-10分钟)。它可以工作大约30分钟以上(因此可以成功运行3-5次),然后突然挂在其中一个DFT项上,尤其是那些在TargetDB中具有约100,000+行的项。我在SQL中检查了活动监视器,似乎我的SSIS程序包在执行阶段被挂起。
但是,当我停止Windows Service时,在SQL Server中停止SSIS程序包,然后转到Visual Studio并手动执行任务,它运行良好!然后,再次启动Windows Service在SSIS程序包再次暂停之前,它可以在接下来的30多分钟内正常工作。
这是否有原因,为什么SQL决定在自动运行时突然暂停我的SSIS程序包?