【问题标题】:SSIS tasks are getting fail with Communication link failure errorSSIS 任务因通信链路故障错误而失败
【发布时间】:2021-07-04 11:19:23
【问题描述】:

在 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

感谢您的帮助。

【问题讨论】:

  • 它是否在失败前的 10-15 分钟内加载任何数据?
  • @Cedersved,是的,它在失败之前将大约 2000 条匹配的记录加载到目的地。

标签: sql-server ssis etl business-intelligence


【解决方案1】:

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

【讨论】:

  • 它在默认查找模式“完整缓存”下运行但更改为“部分缓存”然后也失败了,当更改为“无缓存”模式时它运行成功。谢谢@Cedersved
【解决方案2】:

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

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

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

【讨论】:

  • 感谢@Yitzhak Khabinsky 的回答。
  • @Hussain,很高兴听到建议的解决方案对您有用。请不要忘记将其标记为答案。
猜你喜欢
  • 2012-05-27
  • 1970-01-01
  • 2018-02-17
  • 2012-10-14
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
相关资源
最近更新 更多