我在SSIS包中有3个任务。第一个任务是Execute Process Task
,它运行PowerShell命令从网站下载文件。如果命令失败,则任务失败。所以我有两个连接从它到另外两个任务:一个用于成功,一个用于失败。
该包按预期工作。如果Execute Process Task
成功,则运行关联的成功任务。如果失败,则运行相关的失败任务。
问题在于,如果Execute Process Task
失败,即使它正确/正确地运行了与之相关的故障任务,它也会将任务显示为失败。
有没有让它停止显示为失败,但即使Execute Process Task
失败,仍然会运行相关的失败任务?
答案 0 :(得分:1)
如果您需要该软件包不会导致失败,那么您应该在您应该在软件包上设置FailPackageOnFailure
的任务上将FailParentOnFailure
和False
设置为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
旁注:ExecValueVariable
和ForceExecutionResult
以及其他属性可在属性选项卡中找到,单击任务并按F4显示
答案 1 :(得分:0)
因此,即使父任务失败并且与失败输出相对应的任务成功,您似乎也希望将任务显示为成功。 为此,您需要将FailTaskReturnCodeIsNotSuccessValue字段编辑为False,这样即使父任务没有返回successValue,任务也不会显示为failed.Hope这有助于!!