Sql-Server

如何指定 SQL Server 維護計劃子任務在前面的任務成功或失敗時無條件執行?

  • September 25, 2013

我正在使用 SQL Server Management Studio 維護計劃嚮導創建(相當標準的)日常維護計劃。

在此處輸入圖像描述

AFAIU,倒數第二個任務“備份數據庫任務”只有在前面所有任務都成功後才會執行。由於約束(包含任務的箭頭)都是相同的(取自預設選項創建):

在此處輸入圖像描述

並使用“邏輯與”

現在,如果我在前面的約束中將“邏輯與”更改為“邏輯或”,如果前面的任務之一失敗,備份任務仍然會失敗。

正確的?

在任何情況下如何使備份任務執行?

更新

接受答案後,我仍然對“完成”一詞存有疑問:

失敗的任務在 SQL Server 維護計劃術語中是否被視為執行完成?

您需要將流中相應的上游優先約束更改為 On Completion 而不是 On Success。

這是通過以下兩種方式之一完成的:

  1. 右鍵點擊設計圖面上的約束(如下所示)並從彈出菜單中選擇適當的類型。
  2. 在 Precedence Constraint Editor 對話框(您已打開)中,從 Value 下拉列表中選擇適當的類型。

在 2012 之前的版本中,約束箭頭將變為藍色;在 2012 年,箭頭獲得了更明確的“完成”標題。

在此處輸入圖像描述

話雖如此,如果您想將所有這些都保存在一個流程中,我實際上建議使用 SQL Server Data Tools 來創建包,因為您真正需要的是一個序列容器來放置所有維護內容(保留現有的 On Success 約束類型),然後使用 On Completion 優先約束將容器連接到備份任務。

或者——這是我通常會做的——將過程的備份部分分成不同的子計劃,並在維護部分預計完成後安排它。

引用自:https://dba.stackexchange.com/questions/50400