Sql server SSIS任务因通信链路故障错误而失败

Sql server SSIS任务因通信链路故障错误而失败,sql-server,ssis,etl,business-intelligence,Sql Server,Ssis,Etl,Business Intelligence,在SSIS包中,我有一个OLED源、一个查找转换和一个OLEDB目标任务。我正在VS 2019上运行我的包,但任务(OLED源、OLE DB目标)在10到15分钟后失败,错误如下: [OLE DB Destination [27]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Sourc

在SSIS包中,我有一个OLED源、一个查找转换和一个OLEDB目标任务。我正在VS 2019上运行我的包,但任务(OLED源、OLE DB目标)在10到15分钟后失败,错误如下:

[OLE DB Destination [27]] Error: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 11.0"  Hresult: 0x80004005  Description: "Communication link failure".
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 11.0"  Hresult: 0x80004005  Description: "TCP Provider: The semaphore timeout period has expired.
".
[OLE DB Destination [27]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR.  The "OLE DB Destination.Inputs[OLE DB Destination Input]" failed because error code 0xC020907B occurred, and the error row disposition on "OLE DB Destination.Inputs[OLE DB Destination Input]" specifies failure on error. An error occurred on the specified object of the specified component.  There may be error messages posted before this with more information about the failure.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED.  The ProcessInput method on component "OLE DB Destination" (27) failed with error code 0xC0209029 while processing input "OLE DB Destination Input" (40). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running.  There may be error messages posted before this with more information about the failure.
[OLE DB Source [66]] Error: The attempt to add a row to the Data Flow task buffer failed with error code 0xC0047020.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.  The PrimeOutput method on OLE DB Source returned error code 0xC02020C4.  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.  There may be error messages posted before this with more information about the failure.
我试图通过将任务的
validateExternalMetadata
设置为
false
来解决此问题,但没有成功。 我还检查了关于堆栈溢出的其他答案,以了解几乎类似的问题/问题。但这也没用。
注意:
SSIS连接管理器正在使用
SQL server身份验证
,DB是
Azure SQL


感谢您的帮助。

根据我的经验,此错误可能有多种原因。例如,这可能是由于服务器过载或网络故障造成的。您可以尝试更改查找组件的缓存模式。我假设它在“完全缓存”模式下运行,这意味着在执行查找之前,查找查询中的所有数据都将读取到SSIS服务器的内存中。例如,将其更改为“无缓存”将导致对馈入组件的每一行运行查找查询。“部分缓存”将缓存,但仅当数据流中遇到每个不同的值时才会缓存。这些其他方法将减少SSIS服务器内存的负载,但增加查找源数据库的负载。如果可行,一个选项可能是增加SSIS服务器的RAM。

我发现您使用的是不推荐使用的“Microsoft SQL server本机客户端11.0”

从2018年开始,最好使用针对SQL Server的Microsoft OLE DB驱动程序

它针对Azure进行了优化,并具有许多新功能


在失败之前的10-15分钟内,它是否加载了任何数据?@Cedersved,是的,在失败之前,它将大约2000条匹配的记录加载到目标。它在默认查找模式“完全缓存”下运行,但更改为“部分缓存”,然后也失败,当更改为“无缓存”模式时,它成功运行。谢谢@CedersvedThank@Yitzhak Khabinsky的回答。@Hussain,很高兴听到提议的解决方案对您有效。请别忘了把它标为答案。