SSIS 任务因通信链接失败错误而失败

问题描述 投票:0回答:3

在 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
来解决此问题,但没有成功。 我还检查了有关堆栈溢出的其他答案,以了解几乎类似的问题/问题。但这也没有帮助。
Note:
SSIS 连接管理器正在使用
SQL server authentication
并且 DB 正在使用
Azure SQL

感谢您的帮助(如果有)。

sql-server ssis etl business-intelligence
3个回答
1
投票

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


1
投票

我发现您正在使用已弃用的“Microsoft SQL Server Native Client 11.0”

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

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


0
投票

我必须再次构建连接管理器。即使最初看起来像这样,查询也不会丢失:一旦您再次选择相同的连接,您可以将下拉菜单更改为“SQL 命令”,查询将再次返回。如果您使用较大的包,这会花费一些时间,但这至少是消除该错误的一种方法。

© www.soinside.com 2019 - 2024. All rights reserved.