如何:還原到失敗點 (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;
範例
在執行範例之前,必須先完成下列準備工作:
AdventureWorks 資料庫的預設復原模式是簡單復原模式。由於此復原模式不支援還原至失敗點,請執行下列 ALTER DATABASE 陳述式,設定 AdventureWorks 使用完整復原模式:
USE master; GO ALTER DATABASE AdventureWorks SET RECOVERY FULL;
使用下列 BACKUP 陳述式,建立資料庫的完整資料庫備份:
BACKUP DATABASE AdventureWorks TO DISK = 'C:\AdventureWorks_Data.bck';
建立例行的記錄備份:
BACKUP LOG AdventureWorks TO DISK = 'C:\AdventureWorks_Log.bck';
下列範例會在建立 AdventureWorks 資料庫的結尾記錄備份之後,還原先前建立的備份(此步驟假定可以取得記錄磁碟)。
首先,範例建立資料庫的結尾記錄備份,擷取使用中的記錄,並讓資料庫保留為「還原」狀態。然後,範例還原資料庫備份,套用先前建立的例行記錄備份,然後套用結尾記錄備份。最後,範例用另外一個步驟復原資料庫。
[!附註]
預設行為是復原資料庫,作為還原最後備份的陳述式一部分。
/* Example of restoring a to the point of failure */
-- Step 1: Create a tail-log backup by using WITH NORECOVERY.
BACKUP LOG AdventureWorks
TO DISK = 'C:\AdventureWorks_Log.bck'
WITH NORECOVERY;
GO
-- Step 2: Restore the full database backup.
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\AdventureWorks_Data.bck'
WITH NORECOVERY;
GO
-- Step 3: Restore the first transaction log backup.
RESTORE LOG AdventureWorks
FROM DISK = 'C:\AdventureWorks_Log.bck'
WITH NORECOVERY;
GO
-- Step 4: Restore the tail-log backup.
RESTORE LOG AdventureWorks
FROM DISK = 'C:\AdventureWorks_Log.bck'
WITH NORECOVERY;
GO
-- Step 5: Recover the database.
RESTORE DATABASE AdventureWorks
WITH RECOVERY;
GO