Sql-Server

您能否在之前的子計劃完成後執行 SQL Server 維護子計劃

  • April 14, 2010

我有一個維護計劃來備份和清理舊數據。它有三個子計劃,每個子計劃都有自己的時間表。我可以將子任務 2 的計劃設置為“子任務 1 完成後”嗎?

是的,您應該能夠,但以稍微迂迴的方式。如果您轉到 SQL Server 代理並查看作業,您會注意到這些都是您的維護計劃的所有部分,都被分解為單獨的任務。點兩下一個,然後轉到“步驟”部分。請注意它是如何說“成功時”它說“退出工作報告成功”的?這可以更改為退出報告成功、退出報告失敗或進入下一步。

現在回到作業屬性的步驟部分,您應該能夠添加一個新步驟。新步驟的類型可能預設設置為 T-SQL 腳本,這就是我們想要的。您設置的所有維護計劃選項實際上只是執行 T-SQL 來完成工作。您甚至可以通過點兩下任務然後點擊查看 T-SQL 來查看他們在 MaintenancePlan 設計器中使用的 T-SQL。

所以現在您可以看到維護計劃實際上只是創建單獨的 SQL Server 代理作業並執行 T-SQL 腳本(使用維護計劃工具時以集成服務包的形式)來執行它們。如果您能想出自己的 T-SQL 腳本來進行備份和清理,那麼您可以將它們安排在同一個作業下,並簡單地告訴每個作業在完成後移動到下一步。

我不知道直接從 MaintenancePlan 設計器那裡執行此操作的方法,因為它似乎只有一個小日曆,您可以在其中設置作業執行的時間,但只需做一些工作,您就可以獲得一個執行你想要的方式。以這種方式創建自定義作業最終可能與通過設計器略有不同,因為您沒有使用集成服務,但它仍然非常有能力。

編輯:

實際上想想看,如果你願意,你可以在設計器中複製它。您可以簡單地將所有 3 個子計劃組合成一個大子計劃,而不是創建額外的子計劃。這樣,它們都將在同一個 SQL Server 代理作業下執行,您可以將它們設置為一個接一個地執行。同樣,這樣做有點迂迴,但每次您創建新的子計劃時,它都會將其視為需要單獨安排的全新工作。

引用自:https://serverfault.com/questions/132420