微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SSIS onTaskfailed/OnErrorfailed 事件,无法捕获最近的错误

如何解决SSIS onTaskfailed/OnErrorfailed 事件,无法捕获最近的错误

SSIS 事件处理程序 onerrorfail 或 ontaskFailed 都未能捕获最近的错误消息。 情况 - 1. 父包调用子包。 2.Parent 没有错误,但子包有错误,我正在尝试捕获这些错误

Select TOP 1 
  A.package_name,A.[Message]
FROM SSISDB.[catalog].[Event_messages] A
Where A.execution_path like  '%Template%'   
AND A.Event_name = 'OnError'
Order by A.Message_time desc

Above sql with OnError(event handler) - 检索以前的错误记录。 上面带有 onTaskFailed(event handler) 的 sql - 检索以前的错误记录和最近的错误记录,因此电子邮件被触发两次。 为了停止多封电子邮件,我放入了 Counter 变量。 计数器变量解决了电子邮件问题,但它提供了以前的错误记录而不是最近的错误。准确地说,有一个错误,我不知道为什么它会给出过去的错误。尽管我必须处理多封电子邮件,但我也使用过日期过滤器,但除了上面的 sql 之外,什么都没有。

上面的sql(基本和直接)有什么问题,为什么获取最近的记录会出现这样的问题?更好的处理方法

解决方法

我认为更好的方法是在“事件处理程序”选项卡中使用“OnError”事件处理程序来获取子包中的确切数据流或控制流(无论您在子包中有什么)。因为包失败是子包,你想捕获它的错误。因此,您可以在 OnError 中添加一个“执行 SQL 任务”,并使用“System::ErrorCode”和“System::ErrorDescription”(它们是系统变量)插入您喜欢的一个日志表中。您的插入命令应该类似于“插入 [table_name] ([CodeColumn],[DscColumn]) 值 (?,?);”你可以使用这些系统变量来捕捉你的错误。我建议您也使用一个日期时间列来更好地理解错误。我希望它对你有用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。