Sql-Server
如何指定 SQL Server 維護計劃子任務在前面的任務成功或失敗時無條件執行?
我正在使用 SQL Server Management Studio 維護計劃嚮導創建(相當標準的)日常維護計劃。
AFAIU,倒數第二個任務“備份數據庫任務”只有在前面所有任務都成功後才會執行。由於約束(包含任務的箭頭)都是相同的(取自預設選項創建):
並使用“邏輯與”
現在,如果我在前面的約束中將“邏輯與”更改為“邏輯或”,如果前面的任務之一失敗,備份任務仍然會失敗。
正確的?
在任何情況下如何使備份任務執行?
更新
接受答案後,我仍然對“完成”一詞存有疑問:
您需要將流中相應的上游優先約束更改為 On Completion 而不是 On Success。
這是通過以下兩種方式之一完成的:
- 右鍵點擊設計圖面上的約束(如下所示)並從彈出菜單中選擇適當的類型。
- 在 Precedence Constraint Editor 對話框(您已打開)中,從 Value 下拉列表中選擇適當的類型。
在 2012 之前的版本中,約束箭頭將變為藍色;在 2012 年,箭頭獲得了更明確的“完成”標題。
話雖如此,如果您想將所有這些都保存在一個流程中,我實際上建議使用 SQL Server Data Tools 來創建包,因為您真正需要的是一個序列容器來放置所有維護內容(保留現有的 On Success 約束類型),然後使用 On Completion 優先約束將容器連接到備份任務。
或者——這是我通常會做的——將過程的備份部分分成不同的子計劃,並在維護部分預計完成後安排它。