SSIS中的OnTaskFailed事件处理程序

时间:2009-10-20 17:14:32

标签: sql sql-server-2008 ssis

如果我在我的SSIS包中使用 OnError 事件处理程序,则存在变量 System :: ErrorCode System :: ErrorDescription 如果执行时出现任何问题,可以获取错误信息。

但我无法找到相同的 OnTaskFailed 事件处理程序,即如何从OnTaskFailed事件处理程序获取 ErrorCode ErrorDescription 如果我们只想为我们的包实现OnTaskFailed事件处理程序,那么在执行时任何事情都会失败吗?

4 个答案:

答案 0 :(得分:1)

这可能会有所帮助,它是所有系统变量的列表以及何时可用。

http://msdn.microsoft.com/en-us/library/ms141788.aspx

答案 1 :(得分:0)

我刚刚遇到了同样的问题,并且通过以下方法解决了这个问题:

  1. 创建@ [ErrorCache]变量
  2. 就我而言,该任务被重试了多次,因此我需要一个Expression任务来在每次重试开始时重置@ [ErrorCache]变量
  3. 创建一个OnError事件处理程序,其中包含一个Expression任务,纯粹将@ [ErrorMessage]附加到@ [ErrorCache]
  4. 创建一个OnTaskFailed事件处理程序,然后使用@ [ErrorCache]

答案 2 :(得分:0)

转到要监视错误的任务的事件处理程序,然后单击链接以创建新的处理程序。
然后创建一个任务,例如“发送邮件”并创建2个变量:mail_header和mail_body。

重要:将变量从当前范围移到 OnError 范围,否则在处理程序包时这些值将不可用。

在执行“ + @ [System :: PackageName] +” package时,将mail_subject变量定义为字符串,并将表达式设置为:“ Error” + @ [System :: TaskName] +“。

将mail_body变量定义为字符串,并将表达式设置为:REPLACENULL(@ [System :: ErrorDescription],“”)+“ \ n通知您的系统管理员。

在任务编辑器上,创建一个表达式,将Subject分配给@mail_subject变量。将MessageSourceType定义为变量,并将MessageSource设置为@mail_body。

答案 3 :(得分:-1)

在您放入错误事件处理程序的任务中,您可以选择仅在错误处理程序中可用的参数,例如system:Errordescription或system:Sourcename(提供失败的任务)。我们将这些作为输入变量用于存储过程,该过程插入到错误表中(以及发送失败过程的电子邮件),该过程存储除日志记录表之外的其他信息。我们还使用日志记录表来记录我们的步骤,并在错误中包含错误信息。