SSIS - 再次出现内存不足错误

ili*_*ica 6 sql-server ssis out-of-memory

我有cca 25数据库,我需要合并到1个数据库中.首先,我尝试构建一个ssis包,将每个表中的所有数据复制到一个地方,但后来我收到错误:

信息:缓冲区管理器对10485760字节的内存分配调用失败,但无法交换任何缓冲区以减轻内存压力.考虑了1892个缓冲区,1892个被锁定.管道可用的内存不足,因为安装不够,其他进程正在使用它,或者锁定了太多缓冲区.

然后我意识到这不是一个好主意,我只需要插入新记录并更新现有记录.之后我尝试了这个选项:

  • 获取所有conn的列表.字符串
  • foreach db,复制新记录并更新现有记录(需要更新从源到临时表的副本,从目标中删除它们并从temp复制到目标表)

在此输入图像描述

以下是数据流任务的外观

在此输入图像描述

在某些情况下,数据流量会超过百万行.但是,我仍然得到同样的错误 - 内存不足.

在任务管理器中,情况如下:

在此输入图像描述 在此输入图像描述

我必须注意,在同一台服务器上有28个数据库被复制,当这个包未运行时,sql server仍然使用超过1GB的内存.我读过这是正常的,但现在我不确定......

我已经安装了SQL Server的修补程序,我在本文中找到了:http://support.microsoft.com/kb/977190 但它没有帮助......我做错了什么或者这只是工作的方式我想找到一个解决方案?

谢谢,
Ile

ili*_*ica 3

我找到了一个解决方案,问题出在 SQL Server 中 - 它消耗了太多内存。默认情况下,最大服务器内存设置为 2147483647(这是默认值)。由于我的服务器有 4 GB RAM,因此我将此数字限制为 1100 mb。从那时起,没有出现内存问题,但我的流程任务仍然非常慢。问题出在使用 Lookup 时。默认情况下,查找从查找表中选择所有内容 - 我更改了这一点并仅选择了查找所需的列 - 它多次加快了该过程。

现在整个固结过程大约需要1:15h。