SQL Server的維護計劃Maintenance Plan是一個非常實用的維護工具,可以完成大多數的資料庫維護任務,通過對這些功能的封裝,可以省去很多的程式碼編寫時間。網路上完整介紹的不是很多,特此補上一篇。
資料庫的備份是日常操作非常重要的一個環節,備份的方法也很多,其中最簡單的方法就是通過Management Studio的圖形介面,這種方法對於即時性的備份需求是最快的。
也可以通過SQL語句,直接通過語句相對來說對於自定義的自動化備份更靈活:
BACKUP DATABASE mydb to DISK='D:\Backup\mydb
但有時備份操作往往在具體的要求和自動化的要求上會更高一些,尤其是在資料倉儲系統,比如對一個生產系統的備份通常是這樣要求的:
- 每週六一個全量備份
- 工作日時間每天一個增量備份
- 所有的備份在一個月之後自動刪除
如果你是一個很厲害的Coder,通過SQL程式設計,或者.net c# code,以及powershell等等方式來實現這個需求雖說不難,但也不簡單。而實際上SQLServer早就為我們考慮好了這樣的需求,那就是通過SQLServer自帶的Maintenance Plan。
可以在SQL Server Management Studio的Management下找到Maintenance Plans。
首先右鍵這個資料夾新建一個維護計劃。
給維護計劃取個名字。
維護計劃介面。對於上面我們提到的需求,在維護計劃裡對應的就是三個Subplan。系統會預設建立一個空的Subplan。
Subplan裡都支援哪些功能呢?讓我們點選View選單下的Toolbox。
可以看到在維護計劃下支援的任務型別(熟悉SSIS的朋友對這個或許再熟悉不過)。
將Back Up Database Task拖拽到右側。
雙擊設計介面的Back Up Database Task,彈出備份設計介面,首先指定要備份哪一個資料庫。這裡支援多選,所以在維護整臺伺服器的時候很方便。這裡我們只演示備份AdventureWorksDW2012資料庫。
備份型別選擇Full完整。然後依次指定備份路徑等資訊。
完整備份建立完畢後,再建立一個Subplan,來完成增量備份的設定。
點選Add Subplan後,給子計劃取個名字。
資料庫還是選擇AdventureWorksDW2012,備份型別選擇"差異"。其它設定跟以前相同,當然如果考慮將差異備份和完整備份分開的話,可以考慮重新設定備份路徑。
完整備份和差異備份的設定完成了,接下來需要設定的是清空歷史備份。這裡再新增一個Subplan,將Maintenance Cleanup Task拖拽到設計介面中。
設定要清理的資料夾,指向剛才我們設定的備份路徑,然後在底部設定多久的檔案需要被清理掉,這裡選擇1 Month。
三個步驟設定完畢了,以此為全量備份,差異備份以及備份清理,問了維護方便,將這三個Subplan重新命名:
接下來設定每個步驟的執行週期。按照先前的需求定義,週六一個完整備份,平日一個差異備份,然後自動清理一個月前的備份。
首先點選第一個Subplan的Schedule按鈕,按照如下設定全量備份的週期設定。
然後以此設定差異備份的週期。
最後檔案清理的週期。
設定好之後,儲存,維護計劃就設定完畢了。
而實際上,SQL Server是根據剛才的操作,自動生成了相應的SSIS Package和Job,在SQL Server Agent的Jobs下可以看到生成的相應的三個Job。
點開每個Job,可以看到Job步驟下是在SSIS下生成的對應的Package。
至此,通過維護計劃來實現複雜的備份任務介紹至此。也許這個備份介紹的還不是很全面,但基本足以滿足大多數的需求場景,尤其是對資料倉儲的備份,而且再複雜的備份任務基本也都可以通過維護計劃來實現。