SSIS发送错误时发送多个错误的电子邮件

pra*_*ech 1 ssis

我有简单的SSIS包,其中我创建了On Error事件处理程序发送电子邮件任务以发送错误详细信息.但我收到多封电子邮件,一个错误.我找到了联系所有电子邮件的方法,但它们是vb脚本,我的SQL服务器是64位,这反过来需要修补程序安装二进制编译.所以我需要任何替代选择.即使我可以发送第一封错误电子邮件而忽略其他错误,我也没关系.任何建议将不胜感激.

Wil*_*man 11

您遇到多个错误的原因与事件冒泡有关.如果你有在父包级别的事件处理程序,它有,例如一个数据流任务,并在数据流,有失败,则该对象将抛出和冒泡的错误OLEDB命令组件事件处理程序 然后,因为组件失败,数据流任务会报告错误,并且它会冒泡到事件处理程序.然后,因为数据流任务失败,包失败并发送到事件处理程序.我有一些代码,我过去处理过这个问题,但我现在无法访问该机器.我将在今天晚些时候用完整的答案更新这个问题,但它必须与System :: PackageGUID变量检查System :: SourceID变量,并且只有在它们相等时才运行错误处理程序的邮件部分.System :: SourceID是详细说明哪个对象抛出错误的变量,因此这会将错误报告限制为那些冒泡到包级别的错误(即那些将使整个任务失败的错误).

@Rajiv Varma

在我的事件处理程序(在包级别)我有一个脚本任务(它后面没有代码(基本上是无操作))和发送邮件任务.在脚本任务和发送邮件之间我把约束作为条件(我设置了评估操作:表达式和表达式到值

@[System::SourceID]== @[System::PackageID]
Run Code Online (Sandbox Code Playgroud)

测试以查看错误的来源是否是主包对象然后我使用发送邮件任务发送我的错误消息.

为什么会这样:如果我有一个对象的层次结构

主包 - 循环任务 - 数据流任务

如果数据流任务失败,则抛出一个事件.事件抛出后,它会冒泡到下一级别,循环任务会抛出相同的错误.在此事件之后将其冒泡到主包层并再次引发相同的错误.这就是为什么@Pramodtech首先出现问题,每个级别再次触发相同的错误消息.我在这里有效地做的是忽略任何不在主程序包级别的错误.因此,在消息冒泡到顶层之前,我不会发送任何消息.希望这可以帮助.