SQL作业执行SSIS - 无法完成游标操作,因为在声明游标后表格架构已更改

时间:2016-11-11 09:01:38

标签: sql-server ssis sql-job

我一直试图解决此问题几天,但在网上搜索时没有任何问题直接解释了为什么我收到此错误,因为此程序包上没有执行游标。

我有一个执行SSIS包的SQL作业 - 这个包在这里有很多解释:

enter image description here

如上所示,发生了许多架构更改,最终可以解释为什么我收到此错误但是当手动执行包并且仅通过SQL作业时,似乎永远不会发生此错误。它似乎也是自发地发生,有一天它起作用,然后它给我这个错误:

enter image description here

  

Microsoft(R)SQL Server执行包UtilityVersion 10.50.4000.0 for 64-bitCopyright(C)Microsoft Corporation 2010.保留所有权利。开始于:04:30:00 AMError:2016-11-11 04:31:35.91代码:0xC0202009源:加载到分阶段数据库加载到分阶段数据库[114]描述:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。可以使用OLE DB记录。来源:" Microsoft SQL Server Native Client 10.0" Hresult:0x80004005说明:"无法完成游标操作,因为声明了游标后表格架构发生了变化。" .End ErrorError:2016-11-11 04:31:35.92代码:0xC0209029来源:加载到将数据库加载到分阶段数据库[114]描述:SSIS错误代码DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 "输入" OLE DB目标输入" (127)"失败,因为错误代码0xC020907B发生,错误行处置"输入" OLE DB目标输入" (127)"指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关failure.End ErrorError的错误消息:2016-11-11 04:31:35.92代码:0xC0047022源:加载到分阶段数据库SSIS.Pipeline描述:SSIS错误代码DTS_E_PROCESSINPUTFAILED。组件上的ProcessInput方法"加载到舞台数据库" (114)在处理输入" OLE DB目标输入"时失败,错误代码为0xC0209029。 (127)。标识的组件从ProcessInput方法返回错误。该错误特定于组件,但错误是致命的,并将导致数据流任务停止运行。在此之前可能会发布错误消息,其中包含有关failure.End ErrorError:2016-11-11 04:31:36.06代码:0xC02020C4源:加载到分阶段数据库中检索ITExtr03FinM 1描述:尝试添加数据流任务缓冲区的一行失败,错误代码为0xC0047020.End ErrorError:2016-11-11 04:31:36.11代码:0xC0047038源:加载到分阶段数据库SSIS.Pipeline描述:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。组件上的PrimeOutput方法"检索ITExtr03FinM" (1)返回错误代码0xC02020C4。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关failure.End ErrorDTExec:包执行返回DTSER_FAILURE(1)。启动时间:04:30:00 AMFinished:04:31:36 AMElapsed:95.859秒

上述错误确实提到Load into Stageing Database - 该数据流任务中包含以下内容:

enter image description here

有人可以解释这种异常情况吗?有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

阅读错误我认为回答问题的关键不是光标,而是错误的这些部分:

  • 组件“Retrieve ITExtr03FinM”(1)上的PrimeOutput方法返回错误代码0xC02020C4
  • DTS_E_PRIMEOUTPUTFAILED
  • 加载到舞台数据库中检索ITExtr03FinM 1说明:向数据流任务缓冲区添加行的尝试失败,错误代码 0xC0047020

关于SqlServerCentral的讨论建议将RAM /内存缓冲区配置作为问题https://ask.sqlservercentral.com/questions/46865/ssis-data-flow-task-getting-error-code-0xc02020c4.html

此链接表明32位与64位问题。您在服务器上使用64位本地和32位吗? SSIS ERROR: The attempt to add a row to the Data Flow task buffer failed with error code 0xC0047020

我发现了一些更多的链接,表明RAM是一个问题,这将导致为什么它会在一台机器上出现问题,而不是另一台因为配置会有所不同。此外,如果您在服务器的大量使用时间内运行包,则可以使用更少的内存。

答案 1 :(得分:2)

检查服务器上其他SQL代理和维护任务的计划,特别是在凌晨4:30左右。您的软件包失败的最一致时间是凌晨4:30,我打赌有一个reindex,stats更新或其他同时运行的软件包与您的软件包冲突。

也可能发生与您的软件包冲突的复制。