我有一个包含失败的子包的SSIS包。错误消息不是很有帮助。
尝试向数据流任务缓冲区添加行失败,错误代码为0xC0047020
问题似乎是我用完虚拟内存来完成这项工作。
我找到了一个可以帮助解决问题的论坛帖子。 http://social.msdn.microsoft.com/forums/en-US/sqlintegrationservices/thread/d6d52157-0270-4200-a8c2-585fa9a0eed5/
从提供的解决方案中我不确定如何:
我每天都在SQL Server 2005中运行这个包。我每天都运行正常,直到12日。我假设我们用于将数据导入数据库的dat文件增长到一个大到数据库要处理的大小。它只有一个8.90MB的csv文件。导入是直接列到列导入。
问题子包是第1步,失败并继续并成功完成接下来的8个步骤。
答案 0 :(得分:4)
为SQL Server分配了多少内存? 在SQL Server进程空间之外分配了多少内存?
我问的原因是因为SSIS内存是从位于SQL Server进程空间之外的内存的memToLeave区域分配的。
有关配置memToLeave内存部分可用内存量的详细信息,请参阅here。
有关SSIS的通用性能调整,请参阅以下文章。
http://technet.microsoft.com/en-gb/library/cc966529.aspx
我希望这是有道理的,但是一旦消化了材料,我可以随意给我留言。
干杯,
答案 1 :(得分:1)
随机想:内存泄漏?
我们的prod集群(big corporatebbuild)是SQL 2005 SP1。内存泄漏,每1-4周需要重启一次。
SP2 + HF 3068:已修复
答案 2 :(得分:1)
要更改缓冲区大小,请选择“数据流”任务并更改DefaultBufferMaxRows,MaxBufferSize属性。它们共同决定缓冲区大小。
请注意,在您链接的讨论中,用户最初增加了缓冲区大小(达到100Mb),这可能会导致问题,并且建议用于降低。默认缓冲区大小(10Mb)通常应该没问题。
要在单独的进程中运行子包,请设置Execute Package任务的ExecuteOutOfProcess属性(在主包中)。
但首先:确保你真的在运行虚拟内存,而不是真正的内存,这通常更有可能。查看占用此计算机内存的进程的任务管理器。