我有一个软件包,只要控制流元素出现故障就会发送两封电子邮件。例如,如果ExecuteSQL任务失败,则包级别OnError事件处理程序将触发两封电子邮件。
这是一个已知问题吗?我该如何解决这个问题? 我可以通过数据库驱动的脚本来实现这一点,但实质上,我想处理SSIS本身的情况。谢谢你的帮助。
答案 0 :(得分:4)
请记住,事件处理程序将在触发操作发生时随时引发事件。因此,您不能保证只使用事件处理程序获取一个事件(当然有一些例外)。
如果您只想保证一封电子邮件,那么我建议不要通过OnError事件发送电子邮件,而是将“发送电子邮件任务”链接到控制流并连接到ExecuteSQL任务并使用“失败约束”
或者,您也可以在OnError事件中将用户变量设置为true,然后根据具有“On Completion”约束的电子邮件发送电子邮件,该约束与检查Error用户变量值的表达式混合。这样,OnError事件引发的次数无关紧要,因为任务只有在至少引发一次时才会运行。