简体   繁体   English

随机 SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED

[英]Random SSIS Error Code DTS_E_PRIMEOUTPUTFAILED

I've seen many posts about this error, the difference is that i'm having this error some days yes, some days no and I can't establish a relation to anything.我看过很多关于这个错误的帖子,不同的是我有的时候有这个错误,有的时候有,有的时候没有,我无法与任何东西建立关系。 If I re-run the SSIS package inmediatly after the error it usually works ok.如果我在错误发生后立即重新运行 SSIS 包,它通常可以正常工作。

I've changed the sql driver, as I saw on many posts related to this error, but it doesn't work.正如我在许多与此错误相关的帖子中看到的那样,我已经更改了 sql 驱动程序,但它不起作用。

So... this is the case: each time the SSIS package fails I'm having 2 error messages所以......就是这种情况:每次 SSIS 包失败时,我都会收到 2 条错误消息

Error1 : -1073450952: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.错误 1: -1073450952 :SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。 The PrimeOutput method on component "XXXX" (30) returned error code 0xC0202009.组件“XXXX”(30) 上的 PrimeOutput 方法返回错误代码 0xC0202009。 The component returned a failure code when the pipeline engine called PrimeOutput().当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。 The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing.失败代码的含义由组件定义,但错误是致命的并且管道停止执行。 There may be error messages posted before this with more information about the failure.在此之前可能会发布错误消息,其中包含有关失败的更多信息。

Error2 : -1071636471: SSIS Error Code DTS_E_OLEDBERROR.错误 2: -1071636471 :SSIS 错误代码 DTS_E_OLEDBERROR。 An OLE DB error has occurred.发生 OLE DB 错误。 Error code: 0x80004005.错误代码:0x80004005。 An OLE DB record is available. OLE DB 记录可用。 Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Protocol error in TDS stream".来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“TDS 流中的协议错误”。 An OLE DB record is available. OLE DB 记录可用。 Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Communication link failure".来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“通信链路故障”。 An OLE DB record is available. OLE DB 记录可用。 Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "TCP Provider: An existing connection was forcibly closed by the remote host. ".来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“TCP Provider:现有连接被远程主机强行关闭。”。

An OLE DB record is available. OLE DB 记录可用。 Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Communication link failure".来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“通信链路故障”。 An OLE DB record is available. OLE DB 记录可用。 Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "TCP Provider: An existing connection was forcibly closed by the remote host. ".来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“TCP Provider:现有连接被远程主机强行关闭。”。 An OLE DB record is available. OLE DB 记录可用。 Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Communication link failure".来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“通信链路故障”。 An OLE DB record is available. OLE DB 记录可用。 Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "TCP Provider: An existing connection was forcibly closed by the remote host. ".来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“TCP Provider:现有连接被远程主机强行关闭。”。

Thanks in advance for your time and help!提前感谢您的时间和帮助!

This sort of issue is fairly common and practically impossible to track down and eliminate.这类问题相当普遍,几乎不可能追踪和消除。

I would initiate the SSIS Package from a SQL Server Agent Job.我将从 SQL Server 代理作业启动 SSIS 包。 In the Job Step definition I would set it to retry eg 3 times with a 5 minute delay.在作业步骤定义中,我会将其设置为重试,例如 3 次,延迟 5 分钟。

It's possibly a concurrency issue.这可能是一个并发问题。 I had a package where I read from a source table, then read from the destination table, then did some transformations, and finally the survivors got updated in the destination table.我有一个包,我从源表中读取,然后从目标表中读取,然后进行一些转换,最后幸存者在目标表中得到更新。 Depending on how many steps are between, how intricate the logic is, and what network traffic is like that day, the process may reach different checkpoints on different days before locking up.根据中间有多少步骤,逻辑有多复杂,以及当天的网络流量是什么样的,该过程可能会在锁定之前的不同日期到达不同的检查点。

I found from the Activity Monitor that my write was waiting for the rest of the rows.我从活动监视器中发现我的写入正在等待其余的行。 What it didn't tell me was that my read was blocked by the table-lock on the write.它没有告诉我的是,我的读取被写入时的表锁阻塞了。 I forced a blocking operation by inserting a client-side sort between the read and the write.我通过在读取和写入之间插入客户端排序来强制执行阻塞操作 Other possible solutions involve writing to a temp table ;其他可能的解决方案包括写入临时表 turning off the table-lock on the destination write;关闭目标写入的表锁 redoing the logic so that you don't need the destination;重做逻辑,这样你就不需要目的地了; or splitting them up into different Data Flow Tasks and enforcing execution order with precedence arrows .或将它们拆分为不同的数据流任务并使用优先箭头强制执行顺序。

If you're doing an "upsert" (insert or update) operation, try using a pattern similar to what's described here: http://www.sqlservercentral.com/articles/Integration+Services+%28SSIS%29/62063/如果您正在执行“upsert”(插入或更新)操作,请尝试使用类似于此处描述的模式: http ://www.sqlservercentral.com/articles/Integration+Services+%28SSIS%29/62063/

I had similar problem with my package.我的包裹也有类似的问题。 My source is mySql database so I am using .Net providers.我的来源是 mySql 数据库,所以我使用的是 .Net 提供程序。 MySql Provider. MySql 提供程序。 And during the import after around 30 k records I have error in my source block:在大约 30 k 记录后的导入过程中,我的源块中有错误:

Error1: -1073450952: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.错误 1:-1073450952:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。 The PrimeOutput method on component "XXXX" (30) returned error code 0xC0202009.组件“XXXX”(30) 上的 PrimeOutput 方法返回错误代码 0xC0202009。 The component returned a failure code when the pipeline engine called PrimeOutput().当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。 The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing.失败代码的含义由组件定义,但错误是致命的并且管道停止执行。 There may be error messages posted before this with more information about the failure.在此之前可能会发布错误消息,其中包含有关失败的更多信息。

I fixed it with changes in advanced option for that connection manager (MySql Provider):我通过更改该连接管理器(MySql 提供程序)的高级选项来修复它:

I set value = 10 for keep alive and I increased connection timeout value.我为keep alive设置了value = 10 ,并增加了连接超时值。

The connection to the source is corrupted.与源的连接已损坏。 We had this situation, too.我们也遇到过这种情况。 In our case, the source was a log shipping server and when the package was trying to make a connection to the server, it forcibly closed the connection since it was in the middle of a backup/restore action.在我们的例子中,源是一个日志传送服务器,当包试图与服务器建立连接时,它会强制关闭连接,因为它正处于备份/恢复操作的中间。 So we changed the time of connecting to server to avoid this failure.所以我们改变了连接服务器的时间来避免这个失败。 Another case this issue came up was related to network problems and mostly by connecting to admin team the problem resolved.这个问题出现的另一个案例与网络问题有关,主要是通过连接到管理团队来解决问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM