我试图编写一个SSIS包,它将在某些服务器上执行审核。审计完成后,它会通过电子邮件向负责服务器的系统管理员发送电子邮件,告知他们已经执行了审计,以及他们可以在哪里找到审计报告。
我遇到的问题是,当审核因任何原因(无法连接到服务器等等)失败时,我想向sys admin发送一封电子邮件,说它失败了。很高兴能说它失败的地方,但如果我不得不接受一个简单的"它失败"电子邮件,那也没问题。只要他们知道它还没有运行。
所以我克服了继续前进循环的问题。通过添加将变量传播设置为false的错误处理程序来实现失败。
如何在失败时发送电子邮件的任务?我是否必须添加" OnError" foreach循环中每个任务的事件处理程序(29个任务)?或者是否有一些神奇的"在失败的迭代中执行此任务"?
感谢您的时间。
答案 0 :(得分:0)
因此,经过一些更深入的搜索 - 似乎答案是简单地对foreach循环中的每个组件执行错误处理。很好,因为它允许详细的错误报告(" "失败),令人讨厌,因为在我的案例中它有很多组件。
对于之后使用Google搜索的人: 阻止foreach循环在任务失败时失败:
选择失败的任务,然后点击'事件处理程序'在'参数'旁边在包装设计师的顶部。
在"事件处理程序下的下拉菜单中:"选择' OnError' (它应该已经是选中的那个)然后单击包设计器中间的蓝色文本'点击此处创建一个' OnError'可执行文件的事件处理程序'您的组件名称'
导航到变量窗格(SSIS - >变量)。
在变量中点击“网格选项”'变量窗格顶部的按钮。
检查'显示系统变量'。点击“确定”。
向下滚动到' Propogate',将其设置为False。
重复您认为可能失败的任何组件。
处理错误报告
即使事件处理组件失败,您的foreach循环现在仍将继续。当组件发生故障时,它将在其相应的事件处理程序中执行组件。
希望这有助于将来搜索任何人。
编辑:请注意,失败的组件(如果流程是定向的)将失败整个迭代。这意味着即使在一次失败时也要执行必要的任务,请不要指导任务流程。如果您希望单个组件未能在整个迭代中失败(我的情况),那么通过按优先顺序连接它们来指导任务流。