Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SSIS 2005加载非常大的表_Ssis_Load - Fatal编程技术网

使用SSIS 2005加载非常大的表

使用SSIS 2005加载非常大的表,ssis,load,Ssis,Load,我有一个问题。我正在加载一个非常大的表,该表的现有数据约为1.5亿条记录,通过每天添加100万条记录,该数据将继续增长。几天前,ETL甚至在运行24小时后开始失败。在DFT中,我们让源查询提取100万条记录,然后对照目标表(目标表有1.5亿条记录)进行查找,以检查是否有新记录。它失败了,因为查找无法保存1.5亿条记录的数据。我已尝试将查找更改为合并联接,但未成功。请您建议其他设计,以便成功地将数据加载到大表中。此外,我无法减少目标表的大小。我已经在所有必需的列上建立了索引。希望我能清楚地解释这个

我有一个问题。我正在加载一个非常大的表,该表的现有数据约为1.5亿条记录,通过每天添加100万条记录,该数据将继续增长。几天前,ETL甚至在运行24小时后开始失败。在DFT中,我们让源查询提取100万条记录,然后对照目标表(目标表有1.5亿条记录)进行查找,以检查是否有新记录。它失败了,因为查找无法保存1.5亿条记录的数据。我已尝试将查找更改为合并联接,但未成功。请您建议其他设计,以便成功地将数据加载到大表中。此外,我无法减少目标表的大小。我已经在所有必需的列上建立了索引。希望我能清楚地解释这个场景。

您可以尝试使用表分区来导入大量数据。请看一个例子。另一个可能有用的方法。另外,有关创建和维护分区表的更多信息,请查看msdn。

将旅程一分为二

创建一个新的数据流任务或单独的包,将源表放在靠近目标数据库的环境中


是否更改现有的数据流任务以跨暂存表和目标表进行查询,从而只提取新的和更改的数据?在SSI中相应地记录和处理这些信息。这应该消除了对每个记录执行往返数据库的昂贵查找的需要

,但如果在目标表上使用分区,我将如何检查新记录?您的问题非常广泛,无法给出准确的答案。我建议创建一个临时表来保存记录,这些记录可能是新数据的副本,这取决于数据的性质,您可以使用分区,也可以不使用分区,然后将其与新数据合并,最后是切换分区。感谢您的快速回复,但我没有任何特定的场景可以用来创建具有可能命中目标的临时表。我正在考虑使用T-SQL查询将目标表拆分为多个部分,并使用它与源查询连接,以查找可能与各个部分连接的较新记录一个接一个地获取实际的新记录。这是我现在能想到的。我明天会在工作中尝试,现在才想到。如果你能建议更好的替代方案,我将非常感激。这没有帮助,因为数据库在同一台机器上,但数据量仍然非常大,用于查找或联接。此线程可能会帮助你。。。这是一个很好的线程,但不能解决我的问题。我真的想不出任何其他方法来打破DFT的部分,除了我已经提到的一个。