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。
至此,通過維護計劃來實現複雜的備份任務介紹至此。也許這個備份介紹的還不是很全面,但基本足以滿足大多數的需求場景,尤其是對數據倉庫的備份,而且再複雜的備份任務基本也都可以通過維護計劃來實現。