我有一个包含循环的包,它循环通过几个连接。循环中的每次迭代都是一个新连接。问题是,有时这些连接在包运行时出现故障。所以我添加了一个错误,给我们发送电子邮件通知,然后继续循环。
这很好,使用Event Handlers
并将Propagate
值更改为False
。但问题是,如果连接失败,它将完成循环,但报告整个包失败。这是一个问题,因为在SSMS中的一个作业中,它会在该程序包完成后停止作业,并在它确实没有时报告失败。
即使此循环启动失败的电子邮件,是否有办法让软件包报告成功?我不希望它“继续下一步失败”,因为该包的其他部分可能合法失败,需要通知。
编辑:
以下是我正在做的屏幕截图。在循环内部有一个dataflow
任务,第一个dataflow
的连接有时会失败。如果是,它会触发电子邮件任务通知我们,然后继续循环。
不幸的是,FailPackageOnFailure
已设置为false。
答案 0 :(得分:0)
在失败的任务(或其父容器,如果适用)上,将FailPackageOnFailure
的值更改为false。
如果您正在循环中执行此任务,您可能需要考虑是否还需要将FailParentOnFailure
设置为false。
编辑:如果您的任务或容器都没有导致程序包失败且FailPackageOnFailure
= true,那么您可能在脚本中将程序包设置为失败。也许在您的事件处理程序中,您要保留错误数,然后在程序包结束时,如果错误计数<>,则将程序包状态设置为失败。 0.
通过脚本或FailPackageOnFailure
属性检查所有您可能将程序包设置为失败的点。
答案 1 :(得分:0)
您可以通过将属性 ForceExecutionResult 设置为成功(此属性的默认值为无)来伪造执行结果为成功Foreach循环容器。