【问题标题】:SSIS OnError event handler not firing on failed database connectionSSIS OnError 事件处理程序未在数据库连接失败时触发
【发布时间】:2016-07-21 09:59:01
【问题描述】:

我创建了一个带有 OnError 事件处理程序的 SSIS 包,该处理程序在数据库中插入一些日志记录。

当我通过批处理文件运行包时,我在批处理文件日志中看到包无法执行,因为与数据库的连接(与我插入错误日志的数据库不同) 失败。但是,没有插入日志记录(意味着 OnError 事件处理程序没有触发?)

当与数据库的连接失败时,OnError 事件处理程序不会触发吗?

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    找到了。整个包的 DelayValidation 属性必须设置为 True,以便 连接管理器的验证(以及我认为的其他事情)在运行之前不会执行时间

    OnError 事件处理程序不会被触发,因为它只在运行时起作用。但是,预验证发生在运行时之前,当预验证发现与 DB 的连接之一不起作用时,包会失败

    【讨论】:

      【解决方案2】:
      1. 您确定与错误记录数据库的连接有效吗?您可以尝试在其他地方编写以证明它可以 - 文本文件?
      2. 在 OnTaskFailed 事件中添加一些代码,以防您无法到达 OnError 事件。
      3. FailPackageOnFailure 设置为True

      虽然您可能不想永远保留第 2 步和第 3 步,但它们可以让您深入了解当前问题。

      【讨论】:

      • 尝试了所有方法,但都没有真正触发 onerror 和 ontaskfailed
      • 真的没有开火?
      • yup :( 我创建了 onerror 事件处理程序,因此我可以知道执行期间的任何错误。我认为测试事件处理程序的最简单方法是在我的 dtsConfig 中放置一个不正确的连接字符串。但它不会被解雇。虽然日志文件(来自批处理作业)说包失败。
      猜你喜欢
      • 2011-01-03
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 2022-11-09
      • 2012-04-15
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多