【问题标题】:Change CommandTimeout of SSIS OleDB Source programmatically?以编程方式更改 SSIS OleDB 源的 CommandTimeout?
【发布时间】:2017-12-19 09:58:12
【问题描述】:

在一个相当大的项目中,我们最近收到了在正常工作时间执行某些 SSIS 包的请求。然而,尽管包在夜间可以根据需要执行,但在工作时间,一旦源查询超过给定时间就停止执行是最重要的。

我知道,可以设置 OleDB 源的一个属性,但是有没有办法以编程方式/通过表达式设置它?应该有一种方法来参数化这个超时,不是吗?

感谢您的帮助。

【问题讨论】:

  • 您在 OLEDB SRC 的自定义属性下有 CommandTimeout。这是您唯一可以做到的地方。否则你需要修改你的数据库设置。

标签: sql-server ssis etl sql-server-data-tools command-timeout


【解决方案1】:

您无法使用表达式来执行此操作 - 请参阅 Microsoft Doc 了解 available properties for a Data Flow。没有任何 OLE DB 源属性公开为表达式。

您可以创建另一个具有固定 OLEDB 源超时的包,并在需要时启动它。如果您真的想对其进行参数化,您可以使用 BIML 生成包,在生成时提供所需的值;但您无法在运行时灵活地更改它。

【讨论】:

  • 这可能适用于 SQL 任务,但我在 DataFlows OleDB 源组件中看不到相应的属性/表达式可能性...
  • @Tyron78,根据 MS Docs,你不能用表达式来做。如果您真的想将超时作为参数公开,您可以尝试使用 BIML 在生成时指定超时值来生成包。
  • @Tyron78 这样做的唯一方法是使用 BIML 生成包时,我认为这是您将得到的唯一答案
  • 谢谢。是的,我已经有了一些 biml 脚本并重新生成了包。但是,我认为通过表达式进行修改会好得多。也许它会在稍后的时间点添加。 :-D
【解决方案2】:

这就是你要找的东西。

这允许您设置查询超时的时间。

【讨论】:

  • 谢谢,但正如我的问题中提到的:我知道,可以设置 OleDB 源的属性,但是有没有办法以编程方式/通过表达式设置它?跨度>
  • 不,没有 :) 如果你想与超时混在一起,你必须在你的数据库上设置它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
相关资源
最近更新 更多