天天看點

SQL Server 備份和還原全攻略

一、知識點

完全備份: 備份全部選中的檔案夾,并不依賴檔案的存檔屬性來确定備份那些檔案。(在備份過程中,任何現有的标記都被清除,每個檔案都被标記為已備份,換言之,清除存檔屬性)。完全備份也叫完整備份。

差異備份: 差異備份是針對完全備份:備份上一次的完全備份後發生變化的所有檔案。(差異備份過程中,隻備份有标記的那些選中的檔案和檔案夾。它不清除标記,即:備份後不标記為已備份檔案,換言之,不清除存檔屬性)。

增量備份: 增量備份是針對于上一次備份(無論是哪種備份):備份上一次備份後,所有發生變化的檔案。(增量備份過程中,隻備份有标記的選中的檔案和檔案夾,它清除标記,即:備份後标記檔案,換言之,清除存檔屬性。)

事務日志備份: 在特定事務日志備份之前執行的完整資料庫備份和上次差異備份(如果有)。在完整資料庫備份之後執行的所有事務日志備份或在特定事務日志備份之前執行的差異備份(如果您還原了差異備份)。如果你設定了恢複模式為【簡單】,你将無法使用【事務日志】備份。SQL Server 2000 和 SQL Server 2005: 建立事務日志備份,您必須使用完整恢複或大容量日志記錄恢複模型。

部分備份: 通過指定 READ_WRITE_FILEGROUPS 建立的備份稱為“部分備份”。在簡單恢複模式下,隻允許對隻讀檔案組執行檔案組備份。還原的資料備份類型:資料庫備份、部分備份或檔案備份。對于資料庫備份或部分備份,日志備份序列必須從資料庫備份或部分備份的結尾處開始延續。對于一組檔案備份,日志備份序列必須從整組檔案備份的開頭開始延續。

檔案備份: “檔案備份”包含一個或多個檔案(或檔案組)中的所有資料。

日志鍊: 連續的日志備份序列稱為“日志鍊”。日志鍊從資料庫的完整備份開始。通常,僅當第一次備份資料庫時,或者将恢複模式從簡單恢複模式切換到完整恢複模式或大容量日志恢複模式之後,才會開始一個新的日志鍊。除非在建立完整資料庫備份時選擇覆寫現有備份集,否則現有的日志鍊将保持不變。在該日志鍊保持不變的情況下,便可從媒體集中的任何完整資料庫備份還原資料庫,然後再還原相應恢複點之前的所有後續日志備份。恢複點可以是上次日志備份的結尾,也可以是任何日志備份中的特定恢複點。

一個備份方案例子: 某個站點在星期天晚上執行完整資料庫備份。在白天每隔 4 小時制作一個事務日志備份集,并用當天的備份重寫頭一天的備份。每晚則進行差異備份。如果資料庫的某個資料磁盤在星期四上午 9:12 出現故障,則該站點可以:

1)     備份目前事務日志;(已經出現故障了,如何備份目前事務日志?)

2)     還原從星期天晚上開始的資料庫備份;

3)     還原從星期三晚上開始的差異備份,将資料庫前滾到這一時刻;

4)     還原從早上 4 點到 8 點的事務日志備份,以将資料庫前滾到早上 8 點;

5)     還原故障之後的日志備份。這将使資料庫前滾到故障發生的那一刻。

二、還原步驟

建立一個叫TestBackup的資料庫,建立一張叫Table1的表,這個時候進行一次完整備份,備份檔案為:TestBackupDB-full.bak;接着建立表Table2後進行差異備份,備份檔案為:TestBackupDB-diff.bak;接着建立表Table3後進行事務日志備份(如果資料庫設定了恢複模式為【簡單】,那麼在備份類型選項中将看不到【事務日志】),備份檔案為:TestBackupDB-log.bak;

建立一個叫TestBackup2的資料庫,用于測試TestBackup資料庫的備份檔案的還原。

SQL Server 備份和還原全攻略

(圖1:建立庫結構)

SQL Server 備份和還原全攻略

(圖2:備份類型)

       下面我們就可以對三個備份檔案:TestBackupDB-full.bak、TestBackupDB-diff.bak、TestBackupDB-log.bak進行還原:

       步驟1:還原完整備份檔案TestBackupDB-full.bak,選項如圖4、圖5所示,還原成功後資料清單就會如圖6所示,這是因為恢複狀态選項:不對資料庫執行任何操作,不復原未送出的事務。可以還原其他事務日志。(RESTORE WITH NORECOVERY)

SQL Server 備份和還原全攻略

(圖3:進入SSMS還原)

SQL Server 備份和還原全攻略

(圖4:還原正常)

SQL Server 備份和還原全攻略

(圖5:還原選項)

SQL Server 備份和還原全攻略

(圖6:完整備份還原)

步驟2:還原差異備份檔案TestBackupDB-diff.bak,操作如步驟1所示,這個時候的資料庫還是跟圖6的狀态一樣的。

步驟3:還原事務日志備份檔案TestBackupDB-log.bak,如圖7進入事務日志的還原操作界面;看圖8的選項中有指定事務的時間進行還原(還原過程中的恢複狀态都是預設為RESTORE WITH RECOVERY,是以這裡沒有提及這個選項)。還原後的TestBackup2資料庫,還原之後的資料庫TestBackup2如圖9所示。

SQL Server 備份和還原全攻略

(圖7:進入事務日志)

SQL Server 備份和還原全攻略

(圖8:事務日志)

SQL Server 備份和還原全攻略

(圖9:還原後的資料庫)

三、更新

通常來說文章寫到這裡就應該結束了,但是很幸運,再給你介紹一下如何在對表進行分區後的還原操作,從上面的操作來看隻包括了mdf和ldf檔案,但如果多了幾個ndf檔案,這些還原又一樣嗎?是以我稱這部分的内容為更新。

情景一:如果本來就有對應的分區檔案的,隻要在還原的時候修改【還原為】的檔案名就可以進行還原了。

情景二:如果剛剛建立了分區檔案組和檔案,這個時候接着還原備份就會出現圖10的錯誤(不知道是不是在SQL Server 2005的問題);要解決這個問題有兩個方法,第一個:重新開機資料庫服務再還原;第二個:設定資料庫的【限制通路】設定為【Single】;

SQL Server 備份和還原全攻略

(圖10:錯誤)

四、參考文獻

<a href="http://topic.csdn.net/u/20081219/09/58d66bd7-7688-47cc-8892-d4b4304cb843.html">SQL SERVER資料的差異備份如何還原</a>

<a href="http://msdn.microsoft.com/zh-cn/library/ms190440.aspx">使用事務日志備份</a>

<a href="http://space.itpub.net/?uid-16436858-action-viewspace-itemid-541412">SQL Server 2008事務日志備份工作原理</a>

<a href="http://technet.microsoft.com/zh-cn/library/ms189621(SQL.90).aspx">備份和還原操作指南主題</a>