SSIS foreach循环,继续,但也对失败的迭代执行操作?

时间:2015-06-24 14:54:19

标签: sql-server foreach ssis

我试图编写一个SSIS包,它将在某些服务器上执行审核。审计完成后,它会通过电子邮件向负责服务器的系统管理员发送电子邮件,告知他们已经执行了审计,以及他们可以在哪里找到审计报告。

我遇到的问题是,当审核因任何原因(无法连接到服务器等等)失败时,我想向sys admin发送一封电子邮件,说它失败了。很高兴能说它失败的地方,但如果我不得不接受一个简单的"它失败"电子邮件,那也没问题。只要他们知道它还没有运行。

所以我克服了继续前进循环的问题。通过添加将变量传播设置为false的错误处理程序来实现失败。

如何在失败时发送电子邮件的任务?我是否必须添加" OnError" foreach循环中每个任务的事件处理程序(29个任务)?或者是否有一些神奇的"在失败的迭代中执行此任务"?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

因此,经过一些更深入的搜索 - 似乎答案是简单地对foreach循环中的每个组件执行错误处理。很好,因为它允许详细的错误报告(" "失败),令人讨厌,因为在我的案例中它有很多组件。

对于之后使用Google搜索的人: 阻止foreach循环在任务失败时失败:

  • 选择失败的任务,然后点击'事件处理程序'在'参数'旁边在包装设计师的顶部。

  • 在"事件处理程序下的下拉菜单中:"选择' OnError' (它应该已经是选中的那个)然后单击包设计器中间的蓝色文本'点击此处创建一个' OnError'可执行文件的事件处理程序'您的组件名称'

  • 导航到变量窗格(SSIS - >变量)。

  • 在变量中点击“网格选项”'变量窗格顶部的按钮。

  • 检查'显示系统变量'。点击“确定”。

  • 向下滚动到' Propogate',将其设置为False。

  • 重复您认为可能失败的任何组件。

处理错误报告

  • 对于已添加OnError事件处理程序的每个组件,将组件放在事件处理程序中以报告您最喜欢的报告方法,发送电子邮件,将错误放入数据库中,等等。

即使事件处理组件失败,您的foreach循环现在仍将继续。当组件发生故障时,它将在其相应的事件处理程序中执行组件。

希望这有助于将来搜索任何人。

编辑:请注意,失败的组件(如果流程是定向的)将失败整个迭代。这意味着即使在一次失败时也要执行必要的任务,请不要指导任务流程。如果您希望单个组件未能在整个迭代中失败(我的情况),那么通过按优先顺序连接它们来指导任务流。