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



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

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(事件处理程序(-检索以前的错误记录。以上带有onTaskfailed的SQL(事件处理程序(-检索以前的错误记录和最近的错误记录,因此会触发两次电子邮件。为了停止多封电子邮件,我放入了Counter变量。计数器变量解决了电子邮件问题,但它给出的是以前的错误记录,而不是最近的错误。准确地说,有一个错误,我不知道为什么它给出了过去的错误。我也使用了日期过滤器,除了上面的SQL之外,什么都不起作用,尽管我必须处理多封电子邮件。

上面的SQL(基本的和直接的(有什么问题,为什么获取最近的记录是这样的问题?更好的处理方式?

我认为更好的方法是使用"OnError";"中的事件处理程序;事件处理程序";选项卡显示子程序包中的确切数据流或控制流(无论您的子程序包有什么(。因为程序包已失败,所以它是子程序包,并且您希望捕获它的错误。因此,您可以添加一个";执行SQL任务";在您的OnError中;系统::错误代码";以及";系统::错误描述";(它们是系统变量(,用于插入到您喜欢的一个日志表中。您的插入命令应该是这样的";在[表名称]([CodeColumn],[DscColumn](中插入值(?,?("并且您可以使用这些系统变量来捕捉您的错误。为了更好地理解错误,我建议您也使用一个日期时间列。我希望它对你有用。

相关内容

最新更新