【问题标题】:SSIS Package- Retain Same Connection Property in Excel ConnectionSSIS 包 - 在 Excel 连接中保留相同的连接属性
【发布时间】:2023-03-19 05:49:01
【问题描述】:

我正在使用 SSDT 2017。有 3 个数据流任务(它们使用优先约束连接)将数据从 Excel 加载到数据库表中。当我单独运行每个任务时,它显示为成功,但是当我运行整个包时,它显示为已完成,任务上没有任何绿色勾号,这意味着任务没有被执行。将 Excel 的 RetainSameConnection 属性更改为 True 后,所有任务都已成功完成。

我在早期版本中没有看到这种行为。这是 2017 版的新变化还是我遗漏了什么?

【问题讨论】:

  • 我见过的唯一一次 SSIS 不以这种方式执行步骤是因为流控制问题或文件访问权限之类的问题。如果将所有 3 个放入单个序列容器中会怎样?你有同样的问题吗?
  • 我确定控制流或者访问权限没有问题。我唯一修改的是 RetainSameConnection 属性。
  • 数据流并行运行还是使用优先约束连接?
  • @Hadi 它们使用优先约束连接。
  • @Srikarmogaliraju 如果将第二个和第三个数据流任务 Delay Validation 属性设置为 true 会发生什么??

标签: sql-server excel ssis etl ssis-2017


【解决方案1】:

试图找出问题

基于您正在使用的问题和 cmets 3 数据流任务,其中包含 3 个使用相同连接管理器的 Excel 源组件。

在验证阶段的包执行开始时,每个组件都尝试从连接管理器获取连接以读取元数据并尝试保持此连接打开,直到它必须执行,因为有很多尝试打开相同连接的文件会导致问题。

使用RetainSameConnection包时,运行一次acquireconnection方法,多次使用,问题就解决了。

尝试一下

尝试将所有数据流任务上的每个Excel SourceDelay Validation 属性更改为True,并将ValidateExternalMetadata 属性更改为False,如果仅出于验证目的获取连接可能会解决问题。如果它不起作用,则意味着即使数据流任务执行尚未开始,也会调用acquire连接方法来锁定文件以供读取。

【讨论】:

  • 更改 DelayValidation 和 ValidateExternalMetadata 没有帮助。将 RetainSameConnection 属性更改为 true 即可解决此问题。
  • @Srikarmogaliraju 然后正如我提到的If it doesn't works then it means that the acquire connection method is called to lock the file for read even if the data flow task execution is not started yet.
  • @Srikarmogaliraju 没有其他解决方案,我试图解释为什么 excel 连接管理器会这样。我认为这是RetainSameConnectionproperty 存在的原因之一。祝你好运
  • 感谢您抽出宝贵时间@Hadi。如果我了解更多信息会更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多