資料庫的定時備份Database Backup是一項非常重要的工作,如果有碰到過資料丟失或伺服器出現故障或其他需要用到備份檔案的時候,這項工作就顯得更加重要。但如果每次都手工備份則顯得非常麻煩,那有沒有什麼辦法可以讓系統自動備份呢?當然有。如何做?請跟我來。以下樣本以SQL Server 2005 為例。1. 建立一個要備份檔案的目錄,例如在E盤建一個Backup的目錄,然後再在這個目錄下面建立要備份資料庫所對應的目錄。例如我有兩個資料庫(TEST和KR)是要自動備份的,則需要在Backup建立兩個子目錄:TEST和KR這樣主要是為了看起來比較清楚。2. 建立備份檔案的預存程序BackupDataBase每天0:00做一個完整備份,然後每過若干小時做一次差異備份,如果資料庫比較小則一天產生一個檔案就可以了,即完整備份的bak檔案與差異備份的檔案就是同一個檔案。而如果資料庫比較大則建議每次差異備份時產生一個獨立的檔案。指令碼如下(以下為每天產生一個檔案,如果是第二種情況則需要做相應修改):/********* PROC :BackupDataBase USE:備份資料庫 CREATE BY:MARK CREATE Date:2007/6/4 EXAM:EXEC BackupDataBase **********/ CREATE PROC BackupDataBase AS BEGIN DECLARE @SQL NVARCHAR(4000) IF CONVERT(CHAR(5),GETDATE(),108)='00:00' BEGIN SET @SQL='BACKUP DATABASE [TEST] TO DISK = N' +''''+'E:/Backup/TEST/TEST' + CONVERT(CHAR(8),GETDATE(),112)+'.bak' +''''+'WITH NOFORMAT, NOINIT, NAME = N' +''''+'TEST-FullBackup' +''''+', SKIP, NOREWIND, NOUNLOAD, STATS = 10' END ELSE BEGIN SET @SQL='BACKUP DATABASE [TEST] TO DISK = N' +''''+'E:/Backup/TEST/TEST' + CONVERT(CHAR(8),GETDATE(),112)+'.bak' +''''+'WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N' +''''+'TEST-' +CONVERT(CHAR(5),GETDATE(),108) +''''+', SKIP, NOREWIND, NOUNLOAD, STATS = 10' END EXEC(@SQL) END3. 建立自動備份的Job(作業)3.1選擇【物件總管】-->【Sql Server代理】-->【作業】,單擊滑鼠右鍵,在彈出的菜單中選擇【新增作業(N)…】,在常規選項裡面的名稱輸入作業名稱,此處輸入“AutoBackTest”3.2選擇【步驟】,點擊【建立(N)…】,彈出【作業步驟屬性】對話方塊,在步驟名稱裡面輸入“AutoBackup”,資料庫選擇你要備份的資料庫,例如TEST,在命令裡面輸入:EXEC BackupDataBase ,然後點擊【確定】3.3選擇【計劃】,點擊【建立(N)…】,彈出【作業計劃屬性】對話方塊,在名稱裡面輸入“EveryDay”,在計劃類型裡面選擇“重複執行”,並且把【已啟用】前面的鉤選中。3.4在頻率的執行裡面選擇“每天”,【執行間隔】設為“1”天。在每天頻率的設定如下:開始時間:0:00:00, 結束時間:23:59:59.執行間隔自己設定一個時間就可以了,例如2小時。期間選擇【無結束日期】,然後點擊【確定】。3.5其他幾個選擇是次要的可以不設定,最後點擊【確定】。 這樣的話就可以了,另外需要把Sql Server Agent服務設為“自動”。