在完整復原模式下將資料庫還原至失敗點 (Transact-SQL)
此主題說明如何還原到失敗點。 此主題只與使用完整或大量記錄復原模式的資料庫有關。
還原到失敗點
執行下列基本的 BACKUP 陳述式,備份記錄的結尾:
BACKUP LOG <database_name> TO <backup_device> WITH NORECOVERY, NO_TRUNCATE;
執行下列基本的 RESTORE DATABASE 陳述式,還原完整的資料庫備份:
RESTORE DATABASE <database_name> FROM <backup_device> WITH NORECOVERY;
也可以選擇,執行下列基本的 RESTORE DATABASE 陳述式,還原差異資料庫備份:
RESTORE DATABASE <database_name> FROM <backup_device> WITH NORECOVERY;
套用每個交易記錄,包括您在步驟 1,透過在 RESTORE LOG 陳述式中指定 WITH NORECOVERY 所建立的結尾記錄備份:
RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;
執行下列 RESTORE DATABASE 陳述式,復原資料庫:
RESTORE DATABASE <database_name> WITH RECOVERY;
範例
在執行範例之前,必須先完成下列準備工作:
AdventureWorks2012 資料庫的預設復原模式是簡單復原模式。 由於此復原模式不支援還原至失敗點,請執行下列 ALTER DATABASE 陳述式,設定 AdventureWorks2012 使用完整復原模式:
USE master; GO ALTER DATABASE AdventureWorks2012 SET RECOVERY FULL;
使用下列 BACKUP 陳述式,建立資料庫的完整資料庫備份:
BACKUP DATABASE AdventureWorks2012 TO DISK = 'C:\AdventureWorks2012_Data.bck';
建立例行的記錄備份:
BACKUP LOG AdventureWorks2012 TO DISK = 'C:\AdventureWorks2012_Log.bck';
下列範例會在建立 AdventureWorks2012 資料庫的結尾記錄備份之後,還原先前建立的備份 (此步驟假定可以取得記錄磁碟)。
首先,範例建立資料庫的結尾記錄備份,擷取使用中的記錄,並讓資料庫保留為「還原」狀態。 然後,範例還原資料庫備份,套用先前建立的例行記錄備份,然後套用結尾記錄備份。 最後,範例用另外一個步驟復原資料庫。
[!附註]
預設行為是復原資料庫,作為還原最後備份的陳述式一部分。
/* Example of restoring a to the point of failure */
-- Step 1: Create a tail-log backup by using WITH NORECOVERY.
BACKUP LOG AdventureWorks2012
TO DISK = 'C:\AdventureWorks2012_Log.bck'
WITH NORECOVERY;
GO
-- Step 2: Restore the full database backup.
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'C:\AdventureWorks2012_Data.bck'
WITH NORECOVERY;
GO
-- Step 3: Restore the first transaction log backup.
RESTORE LOG AdventureWorks2012
FROM DISK = 'C:\AdventureWorks2012_Log.bck'
WITH NORECOVERY;
GO
-- Step 4: Restore the tail-log backup.
RESTORE LOG AdventureWorks2012
FROM DISK = 'C:\AdventureWorks2012_Log.bck'
WITH NORECOVERY;
GO
-- Step 5: Recover the database.
RESTORE DATABASE AdventureWorks2012
WITH RECOVERY;
GO