我有一个SSIS包,它使用SQL语句从具有相同模式但数据不同的10个Postgres数据库中提取数据。该包被写入具有10个任务的作业,每个任务具有硬编码值,指示从哪个服务器提取数据。源SQL没有变化,10个源服务器上的db模式是相同的,但数据不同。基本上,我们针对应用程序后端的10个实例运行数据提取。
我们使用32位ODBC驱动程序通过系统DSN连接从SQL Server 2008 R2连接到Postgres。我们不使用fetch,因为它适用于较大的报告但不适用于较小的报告。
在目标SQL Server端,每次运行后,每个SQL语句的结果数据都会附加到具有源ID的同一个表中。通过这种方式,我们可以在单个表中查询10个来源中的任何一个或全部。数据。包运行的每一天,一切都被截断并重新加载。在源端,数据在早上6点左右通过备份/恢复为我们上演;我们的工作从早上8点开始。 SSIS ETL将数据转储到进入桶中,实际的最终插入到面向用户的表中通过存储过程进行。
总结一下,
我们有一个包含多个SQL数据转换任务的包。它通过作业任务中的全局变量一次一个地击中10个PG数据库。它将数据加载到进气表中,然后将存储过程插入到最终客户表中。
这是我遇到的奇怪问题 - 有时一切都正确加载,但有时我只得到一半数据,有时根本没有。有些任务完成,有些人说完成但目标表中没有数据。当我手动运行包(通过t-sql启动作业或在Visual Studio中打开它)时,一切都在100%的时间内运行。一旦我安排包裹,我就无法获得任何一致性。我在一天中的不同时间尝试安排它们无济于事...我和上游人员一起检查确保我在推动时没有拉动,但所有这一切似乎都没问题。
我唯一能想到的是SSIS中的一些模糊的超时设置会在长时间运行时终止这些工作。我可以理解所有结果或没有结果,但是中途加载的表我不明白。谁能指出我正确的方向?感谢。