【问题标题】:SSIS package execute - Out-of-memory issue!SSIS 包执行 - 内存不足问题!
【发布时间】:2009-06-30 10:26:33
【问题描述】:

在执行 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 表中插入数据时会发生这种情况。

如何解决?

【问题讨论】:

  • 这些代码是用于谷歌搜索的,没有人能立即认出它们。另外,错误发生之前的 SSIS 日志条目是什么?发生了什么样的任务/步骤?你是在 Visual Studio 中运行这个包吗?

标签: ssis


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答。这只是帮助我们解决了类似的问题
【解决方案2】:

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

【讨论】:

  • 您能推荐从哪里开始查找这些内存分配日志吗?
【解决方案3】:

我遇到了同样的问题。我的 XML 源大约 2MB。当我启动包时,它开始抛出这个 OutOfMomory 警告。我的服务器有大约 8GB 的​​ RAM。所以这不是内存问题。当前机器 SQL 服务器服务占用了接近 6GB 的空间。我可以从任务管理器中检查这一点。由于我的 SSIS 包目标连接到不同的数据库,我不希望当前服务器 SQL 服务正在运行。所以当我停止这个 SQL SERVER 服务的那一刻,我的 SSIS 包就成功执行了。

【讨论】:

    【解决方案4】:

    @克里斯·皮克福德

    您想使用 PerfMon 计数器: 记忆\ 可用字节/MBytes 承诺的字节 SQLServer:SSIS 管道\ 缓冲存储器 使用中的缓冲器 缓冲区假脱机

    另外,如果您已经登录了您的包,请查看事件 User:BufferSizeTuning

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-18
      • 2013-08-07
      • 2015-04-15
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多