程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 備份和還原全攻略

SQL Server 備份和還原全攻略

編輯:關於SqlServer

一、知識點

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

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

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

事務日志備份: 在 特定事務日志備份之前執行的完整數據庫備份和上次差異備份(如果有)。在完整數據庫備份之後執行的所有事務日志備份或在特定事務日志備份之前執行的差異備 份(如果您還原了差異備份)。如果你設置了恢復模式為【簡單】,你將無法使用【事務日志】備份。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數據庫的備份文件的還原。


(圖1:創建庫結構)


(圖2:備份類型)

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

步驟1:還原完整備份文件TestBackupDB-full.bak,選項如圖4、圖5所示,還原成功後數據列表就會如圖6所示,這是因為恢復狀態選項:不對數據庫執行任何操作,不回滾未提交的事務。可以還原其他事務日志。(RESTORE WITH NORECOVERY)


(圖3:進入SSMS還原)


(圖4:還原常規)


(圖5:還原選項)


(圖6:完整備份還原)

步驟2:還原差異備份文件TestBackupDB-diff.bak,操作如步驟1所示,這個時候的數據庫還是跟圖6的狀態一樣的。

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


(圖7:進入事務日志)


(圖8:事務日志)


(圖9:還原後的數據庫)

三、升級

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

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

情景二:如果剛剛新建了分區文件組和文件,這個時候接著還原備份就會出現圖10的錯誤(不知道是不是在SQL Server 2005的問題);要解決這個問題有兩個方法,第一個:重啟數據庫服務再還原;第二個:設置數據庫的【限制訪問】設置為【Single】;


(圖10:錯誤)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved