0x8007000E描述:“内存不足”。错误

时间:2017-03-09 08:47:25

标签: sql sql-server ssis db2

我正在尝试使用ssis将数据从db2加载到db2。只有源表有240万条记录,源表和目标表之间没有转换,但是在160万条记录之后加载停止。我得到的错误是:

  

错误:0xC0202009在LOAD TO SATGE_GLMXPF_COMPRESSED,OLE DB   目的地[227]:SSIS错误代码DTS_E_OLEDBERROR。 OLE DB错误   已经发生了。错误代码:0x8007000E。 OLE DB记录可用。   来源:“Microsoft Cursor Engine”Hresult:0x8007000E描述:   “内存不足。”。错误:LOAD TO处的0xC0047022   SATGE_GLMXPF_COMPRESSED,SSIS.Pipeline:SSIS错误代码   DTS_E_PROCESSINPUTFAILED。组件“OLE上的ProcessInput方法”   DB Destination“(227)失败,错误代码为0xC0202009   处理输入“OLE DB目的地输入”(240)。确定   component从ProcessInput方法返回错误。错误是   特定于组件,但错误是致命的,将导致   数据流任务停止运行。可能会发布错误消息   在此之前有关于失败的更多信息。错误:0xC02090F5   在LOAD TO SATGE_GLMXPF_COMPRESSED,DataReader Source [2]:The   DataReader Source无法处理数据。例外   HRESULT:0xC0047020错误:0xC0047038在LOAD TO   SATGE_GLMXPF_COMPRESSED,SSIS.Pipeline:SSIS错误代码   DTS_E_PRIMEOUTPUTFAILED。 DataReader Source上的PrimeOutput方法   返回错误代码0xC02090F5。该组件返回了失败代码   当管道引擎调用PrimeOutput()时。的意思   失败代码由组件定义,但错误是致命的   管道停止执行。可能会发布错误消息   在此之前,有关失败的更多信息。

2 个答案:

答案 0 :(得分:0)

您需要仔细配置“每批次行数”和“最大插入提交大小”。

答案 1 :(得分:0)

分配给您的进程的内存被您尝试处理的数据量所淹没时,会发生“Out of Memory”错误。以下是一些注意事项:

  • 您实际上在运行此计算机的计算机上安装了足够的内存吗?我会在32 GB服务器上挑眉。如果要在本地进行测试,请使用较小的数据集并在开发计算机上安装更多内存。这些天使用16GB笔记本电脑并不罕见。
  • 32或64位? 32位进程只能分配2GB的内存,这些内存可能会迅速溢出。如果可能,请尝试切换到64位。
  • 减少数据流中的列。如果可能,请删除任何未使用的列。这将提高内存缓冲区的利用率。
  • 使用IBM的数据提供商或购买自定义提供商。即http://www.cozyroc.com/ssis/db2-destination。您尝试快速加载时出现的错误:
  

无法打开...

的快速加载行集

很可能是由提供商不支持批量加载引起的。批量加载有助于更快地移动内容,这对于内存受限的系统非常重要。