通過《SQL Server 數據庫備份和還原認識和總結(一)》,相信您對數據備份和還原有了一個更深入的認識,在上文中我沒有對事務日志做剖析,在此推薦宋沄劍的文章,對事務日志做了比較詳細的講解:https://www.jb51.net/article/31038.htm。本文將針對上文繼續進行數據備份和還原講解,主要講解備份和還原的一些關鍵選項。
數據庫備份選項

備份數據庫時,有幾個備份選項需要了解一下,覆蓋介質、事務日志等。談到覆蓋介質時,必須先對這個概念有所了解,不然無從談起。
● 介質集 (media set):備份介質(磁帶或磁盤文件)的有序集合,使用固定類型和數量的備份設備向其寫入了一個或多個備份操作。介質集所使用的備份設備的數量決定了介質集中的介質簇的數量。 例如,如果介質集使用兩個非鏡像備份設備,則該介質集包含兩個介質簇。通常,創建介質集后,后續備份操作將依次向介質集追加其備份集。
● 介質簇 (media family):在介質集中的單個非鏡像設備或一組鏡像設備上創建的備份。
● 備份集 (backup set):成功的備份操作將向介質集中添加一個備份集。
大致了解以上概念后,回到備份選項上來:
◆ 備份到現有介質集-追加到現有備份集
如果要將數據庫備份到磁盤上,那么選擇磁盤后(可以選擇一個或多個磁盤驅動器,也可選擇磁帶機設備,在此以磁盤驅動器為例),如果保持默認【備份到現有介質集-追加到現有備份集】SQL Server將自動創建一個介質集(備份介質(磁盤文件或磁帶)的每個卷都包含介質標頭,介質標頭是在第一次使用磁帶(或磁盤)執行備份操作時創建的,它將包含介質的名稱、介質集的唯一標識號、介質簇的唯一標識號等等),然后再將備份集添加到介質集中。例如上篇文章中首次完整備份,SQL Server將自動創建一個介質集,并將備份集添加到介質集中,接著再備份事務日志文件,此事務日志文件備份集將被追加到現有備份集,最終備份文件我們看到的只是一個備份文件MyTest.bak,但還原時選擇此文件后,要還原的備份集列表將顯示先后備份的備份集,如完整備份集、第一次事務日志備份集、第二次事務日志備份集等。
◆ 備份到現有介質集-覆蓋所有現有備份集
此選項將覆蓋介質上的所有備份集并保留介質標頭(如果有)。 如果沒有介質標頭,則創建一個標頭。覆蓋備份時,保留現有的所有介質標頭,同時將新的備份創建為備份設備中的第一個備份。
存在下列任一條件時不覆蓋備份介質:
● 介質上的現有備份尚未過期。 (如果指定 SKIP,則不檢查過期。)
過期日期將指定備份過期的日期,并可以由另一個備份覆蓋。 創建備份時可以指定過期日期。 默認情況下,過期日期由使用 sp_configure 設置的 media retention 選項確定。
● 介質名稱(如果有)與備份介質上的名稱不匹配。
● 介質名稱是一個描述性名稱,用于方便地識別介質。
綜上所述,它們的最大區別是,一個是向現在備份集追加備份集,一個是將現有備份集覆蓋,即以前保存在該備份集里的信息將無法重新讀取。
圖1:備份時選擇【追加到現有備份集】,還原時要還原的備份集里顯示的,每次追加的備份集。

圖2:備份時選擇【覆蓋所有現有備份集】,還原時要還原的備份集里顯示的是已覆蓋的備份集,以前追加的備份集已被覆蓋。

◆ 檢查介質集名稱和備份集過期時間
圖3:備份時輸入的備份集名稱和備份集過期時間,一般備份集默認會帶有名稱,如有必要可以修改為有意義的名稱,過期時間一般保持默認永不過程。

有了上圖,【檢查介質集名稱和備份集過期時間】里就明白該如何輸入了,這個我沒實驗過,沒有太大必要一一實驗了。
◆ 備份到新介質集并清除所有現有備份集
選擇此項可以清除以前的備份集,并使用新的媒體集備份數據庫。
若要創建新介質集,必須格式化備份介質(一個或多個磁帶或磁盤文件)。 格式化進程會對備份介質進行以下更改:
● 刪除舊標頭(如果存在),從而有效地刪除備份介質中以前的內容。
格式化磁帶設備會刪除當前裝入的磁帶中以前所有內容。 格式化磁盤只影響您為備份操作指定的文件。
● 向每個備份設備中的備份介質(磁帶或磁盤文件)寫入新的介質標頭。
◆ 可靠性
● 完成后驗證備份。將會驗證備份集是否完整以及所有卷是否都可讀。
● 寫入媒體前檢查校驗和。將會在寫入備份媒體前驗證校驗和,如果選中此項,可能會增大工作負荷,并降低備份操作的備份吞吐量。
● 出錯時繼續。如果備份數據庫時發生了錯誤,備份工作還將繼續進行。
◆ 事務日志(只有在備份時備份類型選擇為【事務日志】,此項才會被激活)
● 截斷事務日志。選擇此項會備份事務日志并將其截斷,以便釋放更多的日志空間,此時數據庫處于在線狀態。
● 備份日志尾部,并使數據庫處于還原狀態。選擇此項會備份日志尾部并使數據庫處于還原狀態,該項創建尾日志備份,用于備份尚未備份的日志。當故障轉移到輔助數據庫或為了防止在還原操作之前丟失所做工作,該選項很有作用。選擇該項后,在數據庫完全還原之前,數據庫無法使用。
◆ 磁帶機。選擇用磁帶機設備備份數據庫時選擇此選項。
備份相關選項,MSDN有一篇文檔講得相當細,在此推薦。看完此文檔后將對備份存儲方面有一個深入的認識。http://msdn.microsoft.com/zh-cn/vcsharp/ms178062.aspx
數據庫還原選項

◆ 【覆蓋現有數據庫】復選框:選中此項會覆蓋所有現有數據庫以及相關文件,包括已存在的同名其他數據庫或文件。
◆ 【保留復制設置】復選框:選中此項會將已發布的數據庫還原到創建該數據庫的服務器之外的服務器時,保留復制設置。不過該項只有在選擇了【回滾未提交的事務,使數據庫處于可以使用的狀態】單選按鈕之后才可以使用。
◆ 【限制訪問還原的數據庫】復選框:使還原的數據庫僅供 db_owner、dbcreator 或 sysadmin 的成員使用。
恢復狀態:
◆ RESTORE WITH RECOVERY,通過回滾未提交的事務,使數據庫處于可以使用的狀態。無法還原其他事務日志。此項則讓數據庫在還原后進入可正常使用的狀態,并自動恢復尚未完成的事務,如果本次還原是還原的最后一步操作,可以選擇該項。此項為默認選項。
◆ RESTORE WITH NORECOVERY,不對數據庫執行任何操作,不回滾未提交的事務。可以還原其他事務日志。此項則在還原后數據庫仍然無法正常使用,也不恢復未完成的事務操作,但可繼續還原事務日志備份或差異備份,讓數據庫能恢復到最接近目前的狀態。
◆ RESTORE WITH STANDBY,使數據庫處于只讀模式。撤消未提交的事務,但將撤消操作保存在備用文件中,以便可使恢復效果逆轉。選擇此項時,備用文件選擇目錄將被激活。此項則在還原后進行恢復未完成事務的操作,并使數據庫處于只讀狀態,為了可繼續還原事務日志備份,還必須指定一個還原文件來存放被恢復的事務內容。
到此為止,數據庫備份還原選項基本介紹完畢,有遺漏介紹的選項通過名稱能直接明白。至于數據庫備份還原腳本MSDN文檔有語法和示例,再說也可以通過UI設置好后導出標準腳本。

以上為我對SQL Server數據庫備份和還原的認識和總結,如有遺漏掉的細節或講解錯誤,還望高手糾正,多謝!
您可能感興趣的文章:- SQL Server 數據庫備份和還原認識和總結 (一)
- Sqlserver2000 數據庫備份實例代碼
- 數據庫備份 SQLServer的備份和災難恢復
- 簡化SQL Server備份與還原到云工作原理及操作方法