我有一个SSIS包,在数据流任务中使用OLEDB连接获取大量数据。 当我从本地计算机运行程序包时,它有时会因以下错误(代码段)而失败:
Warning: 0x80019002 at OnError: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. [..]
Error: 0xC0202009 at DFT Transform, SRC BSASREL1 [1]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft OLE DB Provider for SQL Server" Hresult: 0x80004005 Description: "[DBNETLIB][ConnectionRead (recv()).]Generel netværksfejl. [..]
Error: 0xC0047038 at DFT Transform, SSIS.Pipeline: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on component "SRC BSASREL1" (1) returned error code 0xC0202009.
The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component,
but the error is fatal and the pipeline stopped executing.
如果我将程序包部署到服务器并使用代理程序作业运行它没有任何问题。 这个错误是周期性的,这让我很难调试......
有没有其他人有过类似的错误,或者有没有人知道如何解决这个问题?
编辑:问题似乎已经解决了。自从禁用TCP烟囱以来,我们还没有出现连接问题。答案 0 :(得分:2)
我认为这里没有足够的信息来隔离错误的根本原因。这不是SSIS的错。各种提供商返回错误,SSIS只是“转发”它们。错误消息中可能存在指向原因的线索。
我曾经花了很多时间尝试修复SSIS和SQL Server中的连接问题。根本原因结果是其中一个DC已经脱机......
安迪
答案 1 :(得分:1)
它会运行很长时间吗?部署程序包的服务器是否与从中读取数据的服务器相同?
如果是这样,您的问题可能是外部问题。我运行的一些繁重的数据传输包有类似的问题。如果服务器过载其他进程,有时它们会失败。如果是这种情况,则是外部问题。
我的建议是,您尝试查明错误的来源(在运行程序包时尝试使测试服务器超载,或者在连接上查找超时)并通过重试机制或通过运行包裹在较低的交通时间。
答案 2 :(得分:0)
好吧,0xC0202009是DTS_E_OLEDBERROR错误(http://msdn.microsoft.com/en-us/library/ms345164.aspx
),dbnetlib.dll进程“能够向Microsoft SQL Server发送保持活动的TCP / IP数据包以维持连接”(这是来自BOL)
我会说一些相关的超时。 OLE DB Source组件上有命令超时属性。你能检查价值吗? 或者也许在连接管理器上的连接字符串
答案 3 :(得分:0)
两年内没有人用这篇文章做过任何事情,但我遇到了这个错误,发现数据集的大小决定了这个错误是否被抛出。奇怪的是,当通过IDE运行SSIS程序时,我没有得到错误。只有在生产模式下才发现此错误。
我发现解决方案是使用类似的东西来分解我的数据集(正在写入XML)以限制返回的数据量:
select * from (
select *, row_number() over (order by a.pkey asc) 'ranker' from sometable
) where Ranker <500000
很糟糕,但那是我发现的。