几条记录后SSIS崩溃

时间:2012-03-29 12:46:01

标签: sql visual-studio sql-server-2008 ssis

我有一个SSIS包,它假设在它们上面循环100,000个记录,并且每个包都将细节保存到几个表中。 它工作正常,直到它达到3000条记录附近,然后视觉工作室崩溃。此时devenv.exe使用了大约500MB,只处理了3000行。 我确定问题不在于特定记录,因为它总是发生在不同的3K记录上。 我有一台带2 GIG ram的好电脑。 我正在使用SSIS 2008。

知道可能是什么问题吗?

感谢。

1 个答案:

答案 0 :(得分:0)

尝试增加数据流任务的默认缓冲区大小。

此处给出的示例:http://www.mssqltips.com/sqlservertip/1867/sql-server-integration-services-ssis-performance-best-practices/

最佳实践#7 - DefaultBufferMaxSize和DefaultBufferMaxRows

  

正如我在“最佳实践#6”中所说,执行树创建   用于存储传入行和执行转换的缓冲区。所以   它创建了多少个缓冲区?一行中有多少行   缓冲?它如何影响性能?

     

创建的缓冲区数量取决于适合a的行数   缓冲区和多少行适合缓冲区依赖于其他几个   因素。第一个考虑因素是估计的行大小,即   来自传入的所有列的最大大小的总和   记录。第二个考虑因素是DefaultBufferMaxSize属性   数据流任务。此属性指定默认最大值   缓冲区的大小。 默认值为10 MB 及其上限和下限   边界受到SSIS的两个内部属性的约束   是 MaxBufferSize(100MB) MinBufferSize(64 KB)。这意味着大小   缓冲区的大小可以小到64 KB,大到100 MB。第三   factor是, DefaultBufferMaxRows,它又是数据流的属性   任务,指定缓冲区中的默认行数。它的   默认值为10000

     

尽管SSIS在按顺序调整这些属性方面做得很好   如果大小超过,则创建最佳数量的缓冲区   DefaultBufferMaxSize然后它减少缓冲区中的行。对于   更好的缓冲性能你可以做两件事。首先你可以删除   源中的不需要的列和每列中的设置数据类型   适当的,特别是如果你的来源是平面文件。这将   使您能够在缓冲区中容纳尽可能多的行。   其次,如果您的系统有足够的可用内存,您可以调整   这些属性可以有少量的大缓冲区   提高绩效。请注意,如果您更改这些值   属性到页面假脱机的位置(参见最佳实践#8)   开始时,它会对性能产生负面影响。所以在设置值之前   对于这些属性,首先要在您的环境中进行彻底测试   适当地设置值。

     

您可以启用BufferSizeTuning事件的日志记录以了解其数量   缓冲区包含的行,您可以监视“缓冲区假脱机”   性能计数器,以查看SSIS是否已开始页面假脱机。一世   我将在下一篇讲述更多有关事件记录和性能计数器的内容   这个系列的提示。