SSIS 任务因通信 link 失败错误而失败

SSIS tasks are getting fail with Communication link failure error

在 SSIS 包中,我有一个 OLED 源、一个查找转换和一个 OLE DB 目标任务。我是 运行 我在 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 来解决此问题,但没有成功。 我还检查了其他关于堆栈溢出的答案,以获得几乎相似的 issues/ques。但这也无济于事。 Note: SSIS 连接管理器正在使用 SQL server authentication 并且数据库是 Azure SQL

感谢您的帮助。

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

我看到您使用的是已弃用的“Microsoft SQL Server Native Client 11.0”

从2018年开始,最好使用Microsoft OLE DB Driver for SQL Server

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