2012-03-09 194 views
0

我有一个SSIS包,在数据流任务中使用OLEDB连接获取大量数据。 当我从我的本地机器上运行的程序包有时会失败,出现以下错误(片段):SSIS连接丢失

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烟囱,所以我们没有连接问题。

+1

Thx,您的意见。我试图看起来beoynd SSIS包,到目前为止,我认为这是一个网络的东西。我禁用了TCP烟囱,因为这显然会导致SSIS连接被丢弃。到目前为止,错误消失了,但由于它是周期性的,我还没有把我的头放在块上。我会在几周内再次写信,并告诉他们状态如何:-) – NicolajB 2012-03-16 08:25:20

回答

1

它运行很长时间吗?将数据包部署到的服务器是否与您读取数据的服务器相同?

如果是这样,你的问题可能是外部的。我遇到了一些我运行的大量数据传输包的类似问题。有时候,如果服务器装载了其他进程,它们会失败。如果是这样的话,这是一个外部问题。

我的建议是,您尝试查明错误的来源(尝试在运行程序包时重载测试服务器,或在连接上查找超时),并通过重试机制绕过限制,或通过运行在较低的交通时间的套餐。

0

好,为0xC0202009是DTS_E_OLEDBERROR错误(http://msdn.microsoft.com/en-us/library/ms345164.aspx)和过程的Dbnetlib.dll“已发送保持活动的TCP/IP数据包到Microsoft SQL Server以保持连接的能力。”(这是来自BOL)

我会说一些相关的超时。 OLE DB Source组件上有一个命令超时属性。你可以检查价值吗? 或者也许连接管理器上的连接字符串

2

我不认为有足够的信息来隔离错误的根本原因。这不是SSIS的错。从各个提供商返回错误,SSIS只是“转发”它们。错误消息中可能有线索指出原因。

我曾经花了很多时间试图修复SSIS和SQL Server中的连接问题。根本原因竟然是区议会的一人下线...

安迪

0

没有人做这个职位在两年内什么,但我遇到了这个错误,发现数据的大小设置确定这个错误是否被抛出。奇怪的是,当通过IDE运行SSIS程序时,我没有收到错误。只有在生产模式下,我发现发生此错误。

的解决方案,我发现,是打破了我的数据集,使用这样的事情来限制返回的数据量(这是被写入XML):

select * from (
    select *, row_number() over (order by a.pkey asc) 'ranker' from sometable 
) where Ranker <500000 

很烂,但是这就是我发现工作。