执行失败优先约束而不显示任务失败

时间:2018-02-03 21:25:34

标签: sql-server ssis constraints etl operator-precedence

我在SSIS包中有3个任务。第一个任务是Execute Process Task,它运行PowerShell命令从网站下载文件。如果命令失败,则任务失败。所以我有两个连接从它到另外两个任务:一个用于成功,一个用于失败。

该包按预期工作。如果Execute Process Task成功,则运行关联的成功任务。如果失败,则运行相关的失败任务。

问题在于,如果Execute Process Task失败,即使它正确/正确地运行了与之相关的故障任务,它也会将任务显示为失败。

有没有让它停止显示为失败,但即使Execute Process Task失败,仍然会运行相关的失败任务?

2 个答案:

答案 0 :(得分:1)

更新1

如果您需要该软件包不会导致失败,那么您应该在您应该在软件包上设置FailPackageOnFailure的任务上将FailParentOnFailureFalse设置为MaximumErrorCount本身大于1。如果Execute Process Task失败,它将增加程序包的错误计数,如果错误计数超过MaximumErrorCount,则程序包可能/仍然会失败。否则,如果您只需要该任务未显示失败,则无法完成

SSIS -- Allow a task to fail but have the package succeed? (查看所有答案,不仅仅是已接受的答案)

初步答复

如果先前任务将始终成功,则无法使用失败优先约束

我认为你不能这样做。因为failure优先约束(连接器)仅在先前任务失败时才有效。您可以使用ForceExecutionResult属性让任务始终成功,但永远不会使用失败连接器。

解决方法

我不确定这是否有帮助,但不是使用失败优先约束,而是使用ExecValueVariable属性将执行值存储在变量中,并将表达式添加到优先约束*(两个连接器都将具有Success约束和类似的表达式:

@[User::ResultValue] = 1

OR

@[User::ResultValue] = 0

旁注:ExecValueVariableForceExecutionResult以及其他属性可在属性选项卡中找到,单击任务并按F4显示

答案 1 :(得分:0)

因此,即使父任务失败并且与失败输出相对应的任务成功,您似乎也希望将任务显示为成功。 为此,您需要将FailTask​​ReturnCodeIsNotSuccessValue字段编辑为False,这样即使父任务没有返回successValue,任务也不会显示为failed.Hope这有助于!!

相关问题