0

每当整个包(PACKAGE + ONEEROR)中发生错误时,我都会使用 ssis 事件处理程序来触发电子邮件。此处触发的电子邮件数量等于生成的错误数量。即使相同的错误发生了 10 次,我如何将其限制为一封邮件。

请建议....

4

1 回答 1

0

你有几个选择。在包级别设置 ONERROR 电子邮件的问题在于,它将为包遇到的每个错误发送一封电子邮件。如果你有一个深层次的转换失败,这会变得很难看,当它失败回到包级别时会出错。

我建议您:1)在任务级别设置 ONERROR 事件并删除包级别事件。通常这已经足够好了。大多数任务只会报告一个错误。小心数据流,它们的行为方式与包级事件类似。

2)设置某种高级日志记录。我已经看到这有几种方法。我见过一些人设置脚本任务以将错误(在任务级别)记录到变量中,然后发送包含正文中的变量的最终电子邮件(在控制流级别)。我还看到人们为每个发生的错误调用存储过程(在任务级别和包级别)。sproc 会将错误记录到数据库并允许包继续到下一步/容器。然后可以将记录的错误转储到 csv 并作为附件通过电子邮件发送。

如果您喜欢当前的设置,可以尝试更改每个容器/任务的错误属性。我从来没有这样做过,但我知道你可以改变任务处理错误的方式!我不喜欢这个选项,因为你可能会遗漏错误(也许?有点猜测)。

从另一个解决方案更新- 如果您想保持当前电子邮件 ONERROR 并简单地防止某些错误“冒泡”并发送电子邮件,您可以点击此链接以了解如何优雅地处理错误。您可以在包级别防止某些任务错误到达您的 ONERROR 事件。祝你好运。

于 2013-08-23T04:27:22.043 回答