我看过很多关于这个错误的帖子,不同之处在于我有一天会有这个错误,有些日子没有,我无法建立任何关系。如果我在错误后重新运行SSIS包,它通常可以正常工作。
我已经更改了sql驱动程序,正如我在许多与此错误相关的帖子中看到的那样,但它不起作用。
所以......就是这样:每次SSIS包失败时,我都会收到2条错误消息
错误1 : - 1073450952:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。组件“XXXX”(30)上的PrimeOutput方法返回错误代码0xC0202009。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
错误2 : - 1071636471:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。 OLE DB记录可用。来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80004005描述:“TDS流中的协议错误”。 OLE DB记录可用。来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80004005描述:“通信链接失败”。 OLE DB记录可用。来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80004005说明:“TCP提供程序:远程主机强制关闭现有连接。 ”。 OLE DB记录可用。来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80004005描述:“通信链接失败”。 OLE DB记录可用。来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80004005说明:“TCP提供程序:远程主机强制关闭现有连接。 ”。 OLE DB记录可用。来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80004005描述:“通信链接失败”。 OLE DB记录可用。来源:“Microsoft SQL Server Native Client 10.0”Hresult:0x80004005说明:“TCP提供程序:远程主机强制关闭现有连接。 ”
提前感谢您的时间和帮助!
答案 0 :(得分:0)
这类问题相当普遍,实际上无法追查和消除。
我将从SQL Server代理作业启动SSIS包。在作业步骤定义中,我将其设置为重试,例如3次,延迟5分钟。
答案 1 :(得分:0)
可能是并发问题。我有一个包,我从源表中读取,然后从目标表读取,然后进行一些转换,最后幸存者在目标表中更新。根据两者之间的步数,逻辑的复杂程度以及当天的网络流量,该流程可能会在锁定之前的不同日期到达不同的检查点。
我在Activity Monitor中发现我的写操作正在等待其余的行。它没有告诉我的是,我的读取被写入时的表锁定所阻止。我通过在读取和写入之间插入客户端排序来强制执行阻止操作。其他可能的解决方案涉及写入临时表;关闭目标写入上的 table-lock ; 重做逻辑,以便您不需要目的地;或者将它们拆分为不同的数据流任务,并使用优先级箭头强制执行执行顺序。
如果您正在进行" upsert" (插入或更新)操作,尝试使用类似于此处描述的模式:http://www.sqlservercentral.com/articles/Integration+Services+%28SSIS%29/62063/
答案 2 :(得分:0)
我的包裹有类似的问题。我的来源是mySql数据库,所以我正在使用.Net provider。 MySql Privider。在大约30 k条记录的导入期间,我的源代码块中有错误:
错误1:-1073450952:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。组件“ XXXX”(30)上的PrimeOutput方法返回了错误代码0xC0202009。当管道引擎调用PrimeOutput()时,该组件返回失败代码。故障代码的含义由组件定义,但是错误是致命的,并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
我通过该连接管理器(MySql Privider)的预先更改选项修复了该问题:
我将“保持活动”设置为10,并且增加了连接超时值。