SSIS 事件处理程序

SSIS event handler

我需要一些帮助, 我正在尝试获取有关 SSIS 错误的信息 我使用事件处理程序。我尝试使用系统变量错误描述来捕获错误 然后我在 table 上插入错误,但是这个系统变量包含任务错误,我想在 table 上插入错误行而不是任务执行错误,因为它更具可读性

当我查看执行结果时出现两行错误:

一个错误:XXX

和其他 [执行任务] 错误:XXX

信息:

我正在使用事件处理程序,并且在事件上我有一个任务更新 table set comment =? id = 在哪里?

非常感谢

导致问题的是您的事件处理程序SQL:

update table set comment = ? where id = ?

您正在用第二条错误消息覆盖第一条错误消息。

要同时捕获它们,请改用 INSERT

编辑

如果您只想插入第一条错误消息,您可以在 SSIS 程序包中添加一个 Boolean 变量,例如 'ErrorSet',设置为 false在包的开头。然后你可以将它传递给错误处理程序并执行类似的操作(第一个 ? 是 'ErrorSet'):

IF ? = 0
    update table set comment = ? where id = ?
;

SELECT CAST(1 AS bit) ErrorSet

然后您可以将 'ErrorSet' 结果写回到 SSIS 包变量中,这将防止发生任何进一步的更新。

您还可以通过使用不同的变量,或者通过将相同的变量重置回 false

将其范围限定到包的不同区域

来自@ChrisMack 的回答:

It's your event handler SQL that is causing the problem:

update table set comment = ? where id = ?

You are overwriting the first error message with the second one.

我添加了一个表达式任务来强制将值直接放在table。