完整數據庫還原(簡單恢復模式)
數據庫完整還原的目的是還原整個數據庫。 整個數據庫在還原期間處於脫機狀態。
在數據庫的任何部分變為聯機之前,必須將所有數據恢復到同一點,即數據庫的所有部分都處於同一時間點並且不存在未提交的事務。
在簡單恢復模式下,數據庫不能還原到特定備份中的特定時間點。
重要
建議您不要附加或還原來自未知或不可信源的數據庫。 這些數據庫可能包含執行非預期 Transact-SQL 代碼的惡意代碼,或通過修改架構或物理數據庫結構導致錯誤。
使用來自未知源或不可信源的數據庫前,請在非生產服務器上針對數據庫運行 DBCC CHECKDB ,然后檢查數據庫中的代碼,例如存儲過程或其他用戶定義代碼。
在簡單恢復模式下還原數據庫的概述
簡單恢復模式下的完整數據庫還原只涉及一個或兩個 RESTORE 語句,具體取決於是否需要還原差異數據庫備份。 如果只使用完整數據庫備份,則只需還原最近的備份,如下圖所示。
僅還原完整數據庫備份
如果還使用差異數據庫備份,則應還原最近的完整數據庫備份而不恢復數據庫,然后還原最近的差異數據庫備份並恢復數據庫。 下圖顯示了這一過程。
還原完整數據庫備份和差異數據庫備份
基本 TRANSACT-SQL RESTORE 語法
用於還原完整數據庫備份的基本 Transact-SQLRESTORE 語法是:
RESTORE DATABASE database_name FROM backup_device [ WITH NORECOVERY ]
備注
如果還打算還原差異數據庫備份,則應使用 WITH NORECOVERY。
用於還原數據庫備份的 RESTORE 語句的基本語法是:
RESTORE DATABASE database_name FROM backup_device WITH RECOVERY
示例 (Transact-SQL)
以下示例首先顯示如何使用 BACKUP 語句來創建 AdventureWorks2012 數據庫的完整數據庫備份和差異數據庫備份。 然后按順序還原這些備份。 將數據庫還原到完成差異數據庫備份時的狀態。
該示例說明數據庫完整還原方案的還原序列中的關鍵選項。 還原順序 由通過一個或多個還原階段來移動數據的一個或多個還原操作組成。 將省略與此目的不相關的語法和詳細信息。 在恢復數據庫時,盡管 RECOVERY 選項是默認值,但為清楚起見,仍建議顯式指定該選項。
備注
此示例以 ALTER DATABASE 語句開頭,該語句將恢復模式設置為 SIMPLE。
USE master; --Make sure the database is using the simple recovery model. ALTER DATABASE AdventureWorks2012 SET RECOVERY SIMPLE; GO -- Back up the full AdventureWorks2012 database. BACKUP DATABASE AdventureWorks2012 TO DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak' WITH FORMAT; GO --Create a differential database backup. BACKUP DATABASE AdventureWorks2012 TO DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak' WITH DIFFERENTIAL; GO --Restore the full database backup (from backup set 1). RESTORE DATABASE AdventureWorks2012 FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak' WITH FILE=1, NORECOVERY; --Restore the differential backup (from backup set 2). RESTORE DATABASE AdventureWorks2012 FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak' WITH FILE=2, RECOVERY; GO
聚焦技術與人文,分享干貨,共同成長更多內容請關注“數據與人”