如何指定 SQL Server 维护计划子任务在前面任务成功或失败时无条件运行?

Ful*_*oof 5 sql-server ssis maintenance-plans

我正在使用 SQL Server Management Studio 维护计划向导创建(相当标准的)每日维护计划。

在此处输入图片说明

AFAIU,倒数第二个任务“备份数据库任务”只有在所有前面的任务都成功时才会执行。由于约束(包含任务的箭头)都是相同的(取自默认选项创建):

在此处输入图片说明

并使用“逻辑与”

现在,如果我在前面的约束中将“逻辑与”更改为“逻辑或”,如果前面的任务之一失败,备份任务仍然会失败。
正确的?

在任何情况下如何使备份任务运行?

更新
接受答案后,我仍然对术语“完成”存有疑问:
在 SQL Server 维护计划术语中,是否认为失败的任务已完成?

bil*_*nkc 5

值中有 3 个选项:成功、失败和完成(近似值)。将所有前述优先约束的值更改为 Completion 应确保无论上游任务如何,都可以到达备份任务。

执行结果

优先约束可以单独使用以下执行结果,也可以与表达式结合使用。

  • 完成只需要优先可执行文件已经完成,而不考虑结果,以便受约束的可执行文件运行。
  • 成功要求优先可执行文件必须成功完成,受约束的可执行文件才能运行。
  • 失败要求优先可执行文件失败,受约束的可执行文件才能运行。

进一步阅读:


Jon*_*gel 2

您需要将流程中适当的上游优先约束更改为“完成时”而不是“成功时”。

这是通过以下两种方式之一完成的:

  1. 右键单击设计图面上的约束(如下所示),然后从弹出菜单中选择适当的类型。
  2. 在“优先约束编辑器”对话框(已打开)中,从“值”下拉列表中选择适当的类型。

在2012年之前的版本中,约束箭头会变成蓝色;2012 年,箭头获得了更明确的“完成”标题。

在此输入图像描述

话虽如此,如果您想将所有这些保留在一个流程中,我实际上建议使用 SQL Server Data Tools 来创建包,因为您真正需要的是一个序列容器来放入所有维护内容(保留现有的“成功时”约束类型),然后使用“完成时”优先约束将容器连接到备份任务。

或者——这就是我通常会做的——将流程的备份部分分离到不同的子计划中,并在维护部分预计完成后安排它。