随机 SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED

问题描述 投票:0回答:4

我看过很多关于这个错误的帖子,不同的是,我有时会遇到这个错误,有时是,有时不会,而且我无法与任何东西建立关系。如果我在错误发生后立即重新运行 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 客户端 10.0" Hresult: 0x80004005 描述: "通信链接 失败”。
OLE DB 记录可用。资料来源:“微软 SQL 服务器本机客户端 10.0" Hresult: 0x80004005 描述: "TCP 提供者:现有连接被远程强制关闭 主持人。 ”.

sql sql-server ssis
4个回答
0
投票

此类问题相当普遍,实际上不可能追踪和消除。

我将从 SQL Server 代理作业启动 SSIS 包。在作业步骤定义中,我将其设置为重试,例如3次,延迟5分钟。


0
投票

这可能是一个“并发”问题。我有一个包,我从源表中读取数据,然后从目标表中读取数据,然后进行一些转换,最后幸存者在目标表中得到更新。根据步骤之间的数量、逻辑的复杂程度以及当天的网络流量,该过程可能会在不同的日子到达不同的检查点,然后才会锁定。 我从活动监视器中发现我的写入正在等待其余行。它没有告诉我的是我的读取被写入时的表锁阻止了。我通过在读取和写入之间插入客户端排序来强制执行“阻塞操作”。其他可能的解决方案包括

写入临时表

;关闭目标写入时的table-lock重做逻辑,这样你就不需要目的地了;或者将它们分成不同的数据流任务并使用优先箭头强制执行顺序。 如果您正在执行“upsert”(插入或更新)操作,请尝试使用类似于此处描述的模式:http://www.sqlservercentral.com/articles/Integration+Services+%28SSIS%29/62063/

我的包裹也有类似的问题。我的来源是 mySql 数据库,因此我使用 .Net 提供程序。 MySql 提供者。在导入大约 30 k 条记录后,我的源块中出现错误:


0
投票
错误1:-1073450952:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。组件“XXXX”(30) 上的 PrimeOutput 方法返回错误代码 0xC0202009。当管道引擎调用 PrimeOutput() 时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

我通过更改该连接管理器(MySql Provider)的高级选项来修复它:

我将
value = 10

设置为

keep alive

,并增加了连接超时值。

    
与源的连接已损坏。我们也遇到过这样的情况。在我们的例子中,源是日志传送服务器,当包尝试与服务器建立连接时,它强制关闭连接,因为它正在进行备份/恢复操作。所以我们改变了连接服务器的时间来避免这种失败。此问题出现的另一个案例与网络问题有关,主要是通过连接到管理团队来解决问题。


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.