2009-06-30 62 views
3

在执行SSIS包,我得到了下面的错误,SSIS包执行 - 内存不足问题!

The buffer manager failed a memory allocation call for 10484608 bytes, but was unable to swap out any buffers to relieve memory pressure. 20 buffers were considered and 20 were locked. Either not enough memory is available to the pipeline because not enough are installed, other processes were using it, or too many buffers are locked.

[DTS.Pipeline] Error: Thread "SourceThread0" has exited with error code 0xC0047038.

[DTS.Pipeline] Error: The Data Flow task failed to create a buffer to call PrimeOutput for output "XML Source 1" (91) on component "GeneralCongfigurations" (98). This error usually occurs due to an out-of-memory condition.

从 '脚本组件' 的XML文件,试图SQL表插入数据时,它发生。

如何解决?

+0

这些代码是用于谷歌搜索,没有人认出他们的蝙蝠。此外,发生错误之前,SSIS日志条目是什么?发生了什么样的任务/步骤?你是否在Visual Studio中运行这个包? – MatthewMartin 2009-06-30 11:26:37

回答

3

该消息告诉你SSIS正在使用20个缓冲区,每个10Mb - 大约200Mb在一起。 内存不是很大,即使在1Gb的机器上也不会耗尽内存。

这很可能是其他进程占用内存的其余部分 - 请检查任务管理器。通常是使用所有内存的SQL Server - 如果在同一台机器上运行SQL和SSIS,限制SQL允许使用的内存量(在SQL Server属性中),为SSIS留下一些内存 - 我建议至少离开0.5GB。

+0

谢谢你的回答。这只是帮助我们解决了类似的问题 – 2012-09-19 16:17:02

0

您还应该查看所有日志消息。特别是,查找转换可以记录他们正在使用多少内存的大量信息。你可以得到一些关于内存分配的非常详细的日志。

+1

你能推荐从哪里开始寻找这些内存分配日志吗? – 2014-02-18 09:34:31

0

我面临同样的问题。我的XML来源大约是2MB。当我开始打包时,它开始抛出这个OutOfMomory警告。我的服务器有大约8GB的RAM。所以这不是记忆问题。当前的机器SQL服务器服务正在接近6GB的空间。我可以从任务管理器中检查这个。由于我的SSIS包目的地连接到差异数据库,我不希望当前的服务器SQL服务正在运行。所以当我停止这个SQL SERVER服务的时候,我的SSIS包成功执行了。