如何:套用交易記錄檔備份 (Transact-SQL)
若要將交易記錄備份套用到資料庫,下列條件必須成立:
在建立完整或差異資料庫備份之前,資料庫必須已在使用完整復原模式或大量記錄復原模式。
還原較早的備份時,還原順序必須已經指定 WITH NORECOVERY。
必須依建立記錄備份的順序來套用記錄備份,且記錄鏈中沒有任何間距。除了最後一個記錄備份以外,您必須使用 WITH NORECOVERY,如下所示:
RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;
當套用最後一個記錄備份時,您可以執行下列動作:
在最後一個 BACKUP LOG 陳述式之中復原資料庫:
RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY; GO
使用不同的 RESTORE DATABASE 陳述式來等待復原資料庫:
RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; RESTORE DATABASE <database_name> WITH RECOVERY; GO
等待復原資料庫,可讓您有機會確認是否已經還原所有必要的記錄備份。在執行時間點還原時,這個方法是較明智的。
重要事項 |
---|
我們建議您在每一個 RESTORE 陳述式中永遠明確指定 WITH NORECOVERY 或 WITH RECOVERY,以避免模稜兩可。這在撰寫指令碼時尤其重要。 |
套用交易記錄備份
執行 RESTORE LOG 陳述式以套用交易記錄備份,請指定:
交易記錄檔要套用的資料庫名稱。
用於還原交易記錄備份的備份裝置。
NORECOVERY 子句。
此陳述式的基本語法如下:
RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY
其中的 <database_name> 為資料庫名稱,<backup_device> 為裝置名稱,包含要還原的記錄備份。
對於需要套用的每個交易記錄備份,請重複步驟 1。
依還原順序還原最後備份之後,若要復原資料庫,請使用下列陳述式:
RESTORE <database_name> WITH RECOVERY
重要事項 如果您建立鏡像資料庫,請省略復原步驟。鏡像資料庫必須保留 RESTORING 狀態。
範例
依預設,AdventureWorks 資料庫使用簡單復原模式。此範例需要修改資料庫以使用完整復原模式,如下所示:
ALTER DATABASE AdventureWorks SET RECOVERY FULL
A. 套用單一交易記錄備份
下列範例一開始會使用名為 AdventureWorks_1 備份裝置上的完整資料庫備份來還原 AdventureWorks 資料庫。此範例接著套用名為 AdventureWorks_log 備份裝置上的第一個交易記錄備份。最後,此範例復原了資料庫。
RESTORE DATABASE AdventureWorks
FROM AdventureWorks_1
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
FROM AdventureWorks_log
WITH FILE = 1,
WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks
WITH RECOVERY
GO
B. 套用多個交易記錄備份
下列範例一開始會使用名為 AdventureWorks_1 備份裝置上的完整資料庫備份來還原 AdventureWorks 資料庫。此範例接著逐一套用名為 AdventureWorks_log 備份裝置上的前三個交易記錄備份。最後,此範例復原了資料庫。
RESTORE DATABASE AdventureWorks
FROM AdventureWorks_1
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
FROM AdventureWorks_log
WITH FILE = 1,
NORECOVERY
GO
RESTORE LOG AdventureWorks
FROM AdventureWorks_log
WITH FILE = 2,
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
FROM AdventureWorks_log
WITH FILE = 3,
WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks
WITH RECOVERY
GO