恢復模式是一個數據庫配置選項,控制如何記錄事務日志、事務日志是否需要備份以及數據庫可用的還原操作。你為數據庫選擇的恢復模式,根據該恢復模式執行的或沒有執行的日志記錄,同時涉及數據恢復問題和性能問題。
學習目標:
n 能夠解釋各恢復模式間的區別
n 能夠為每個SQL Server 2005數據庫選擇最佳的恢復模式
預計課程時間:10分鐘
|
恢復模式綜述
SQL Server 2005為數據庫提供了三種恢復模式:完整、簡單和大容量日志。這些模式決定了SQL Server如何使用事務日志,如何選擇它要記錄的操作,以及是否截斷日志。截斷事務日志是刪除已執行事務并把該日志空間讓給新事務的過程。下面是每種恢復模式的定義。
n 在完整恢復模式下,數據庫引擎把所有操作都記錄到事務日志上,并且數據庫引擎絕對不會截斷日志。完整恢復模式能使數據庫恢復到故障時間點(在SQL Server 2005 Enterprise版中,恢復到一個比這更早一些的時間點)。
n 在簡單恢復模式下,數據庫引擎最低限度地記錄大多數操作,并在每個檢查點之后截斷事務日志。在簡單恢復模式下,不能備份或還原事務日志。此外,也不能還原單獨的數據頁。
重要提示 簡單恢復模式
簡單恢復模式并不適合那些無法接受丟失最新更改的數據庫。
n 在大容量日志模式下,數據庫引擎對大容量操作(諸如SELECT INTO和BULK INSERT)進行最小記錄。在這種恢復模式下,如果一個日志備份包含任何大容量操作,就可以使數據庫恢復到日志備份的結尾,但不能恢復到某個時間點。大容量日志模式僅用于大容量操作期間。
如何配置恢復模式
在SSMS中的“數據庫屬性”頁上可以查看為一個給定數據庫指定的恢復模式,對此也可以通過查詢sys.database目錄視圖,其基本語法如下所示:
SELECT name, recovery_model_desc FROM sys.databases
要配置一個數據庫的恢復模式,可以進入SSMS中的“數據庫屬性”頁,也可以使用ALTER DATABASE語句。
在SSMS中,通過執行下列步驟可以改變恢復模式。
1. 在SSMS的“對象資源管理器”下展開“數據庫”節點。
2. 右擊需要設置恢復模式的數據庫,然后選擇“屬性”。選擇“選項”頁。
3. 這時就可以通過“恢復模式”下拉列表改變恢復模式,如圖2.3所示。

圖2.3 通過SSMS改變恢復模式
使用ALTER DATABASE語句配置恢復模式的基本語法如下:
ALTER DATABASE <database_name>
SET RECOVERY FULL | SIMPLE | BULK_LOGGED
如前所述,在生產環境下建議對數據庫使用完整恢復模式,因為它提供了最可恢復的配置。如果通過大容量機制定期導入數據,則可以臨時將數據庫的恢復模式改變為大容量日志模式,以獲得更好的大容量負載性能。然而,在導入過程結束以后,應將數據庫恢復為完整恢復模式。
練習:改變數據庫的恢復模式
本練習將數據庫恢復模式改變為大容量日志,以獲得大容量日志操作的良好性能,然后恢復到完整恢復模式。
1. 通過執行如下ALTER DATABASE語句,將AdventureWorks數據庫的數據庫恢復模式設置為大容量日志恢復模式。(在改變恢復模式前,對該數據庫作完整備份。)
-- Note that you should create the C:"Backup folder at Operating
System level before running this backup.
BACKUP DATABASE AdventureWorks TO DISK='C:"Backup"
AdventureWorks.Bak'
GO
--Change the Recovery Model to Bulk Logged
ALTER DATABASE AdventureWorks
SET RECOVERY BULK_LOGGED
2. 在執行大容量日志操作以后,輸入并運行如下ALTER DATABASE語句,將恢復模式改回完整恢復模式,然后執行另一次完整的數據庫備份,以備份剛剛裝入的數據。
ALTER DATABASE AdventureWorks
SET RECOVERY FULL
--Perform a Full database backup
BACKUP DATABASE AdventureWorks TO DISK='C:"Backup"
AdventureWorks.Bak'
GO
本課總結
n 恢復模式允許我們控制數據庫引擎如何記錄事務日志,可以對一個特定的數據庫使用哪些還原操作。
n SQL Server提供了三個恢復模式:完整、簡單和大容量日志。
n 完整恢復模式是默認的模式,而且也是推薦使用的模式,它記錄所有的操作,能使數據庫恢復到故障時間點。
n 簡單恢復模式最低限度地記錄大多數操作,它不允許我們備份或還原事務日志。
n 大容量日志恢復模式最低限度地記錄大容量操作,主要供大容量操作期間臨時 使用。
n 通過以下兩個方法可以配置一個數據庫的恢復模式:通過SSMS中的“數據庫屬性”窗口,或者使用T-SQL語句ALTER DATABASE。
課后測試
下列問題旨在鞏固本課介紹的關鍵內容。如果喜歡用電子版的,可以參見配套CD。
提示 參考答案
這些題目的參考答案以及對每個選項的具體解釋,參見本書后面的“參考答案”部分。
1. 下列關于恢復模式的說法,哪個是正確的?
A. 在簡單恢復模式下,大多數事務被最低限度地記錄到日志中
B. 在完整恢復模式下,大多數事務被最低限度地記錄到日志中
C. 在大容量日志恢復模式下,所有事務都被記錄到日志中
D. 在簡單恢復模式下,所有事務都被記錄到日志中
2. 下列哪種方式允許你改變數據庫恢復模式?(選擇所有正確答案)
A. sp_configure存儲過程
B. SSMS中的數據庫屬性
C. ALTER DATABASE
D. CREATE DATABASE
3. 在簡單恢復模式下,下列哪些恢復操作是不允許的?(選擇所有正確答案)
A. 時間點恢復
B. 差異恢復
C. 完整恢復
D. 頁恢復