如何:還原到失敗點 (Transact-SQL)

此主題說明如何還原到失敗點。此主題只與使用完整或大量記錄復原模式的資料庫有關。

還原到失敗點

  1. 執行下列基本的 BACKUP 陳述式,備份記錄的結尾:

    BACKUP LOG <database_name>TO <backup_device> 
       WITH NORECOVERY, NO_TRUNCATE;
    
  2. 執行下列基本的 RESTORE DATABASE 陳述式,還原完整的資料庫備份:

    RESTORE DATABASE <database_name> FROM <backup_device> 
       WITH NORECOVERY;
    
  3. 也可以選擇,執行下列基本的 RESTORE DATABASE 陳述式,還原差異資料庫備份:

    RESTORE DATABASE <database_name> FROM <backup_device> 
       WITH NORECOVERY;
    
  4. 套用每個交易記錄,包括您在步驟 1,透過在 RESTORE LOG 陳述式中指定 WITH NORECOVERY 所建立的結尾記錄備份:

    RESTORE LOG <database_name> FROM <backup_device> 
       WITH NORECOVERY;
    
  5. 執行下列 RESTORE DATABASE 陳述式,復原資料庫:

    RESTORE DATABASE <database_name> 
       WITH RECOVERY;
    

範例

在執行範例之前,必須先完成下列準備工作:

  1. AdventureWorks2008R2 資料庫的預設復原模式是簡單復原模式。由於此復原模式不支援還原至失敗點,請執行下列 ALTER DATABASE 陳述式,設定 AdventureWorks2008R2 使用完整復原模式:

    USE master;
    GO
    ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL;
    
  2. 使用下列 BACKUP 陳述式,建立資料庫的完整資料庫備份:

    BACKUP DATABASE AdventureWork2008R2s TO DISK = 'C:\AdventureWorks2008R2_Data.bck';
    
  3. 建立例行的記錄備份:

    BACKUP LOG AdventureWorks2008R2 TO DISK = 'C:\AdventureWorks2008R2_Log.bck';
    

下列範例會在建立 AdventureWorks2008R2 資料庫的結尾記錄備份之後,還原先前建立的備份(此步驟假定可以取得記錄磁碟)。

首先,範例建立資料庫的結尾記錄備份,擷取使用中的記錄,並讓資料庫保留為「還原」狀態。然後,範例還原資料庫備份,套用先前建立的例行記錄備份,然後套用結尾記錄備份。最後,範例用另外一個步驟復原資料庫。

[!附註]

預設行為是復原資料庫,作為還原最後備份的陳述式一部分。

/* Example of restoring a to the point of failure */
-- Step 1: Create a tail-log backup by using WITH NORECOVERY.
BACKUP LOG AdventureWorks2008R2
   TO DISK = 'C:\AdventureWorks2008R2_Log.bck'
   WITH NORECOVERY;
GO
-- Step 2: Restore the full database backup.
RESTORE DATABASE AdventureWorks2008R2
   FROM DISK = 'C:\AdventureWorks2008R2_Data.bck'
   WITH NORECOVERY;
GO
-- Step 3: Restore the first transaction log backup.
RESTORE LOG AdventureWorks2008R2
   FROM DISK = 'C:\AdventureWorks2008R2_Log.bck'
   WITH NORECOVERY;
GO
-- Step 4: Restore the tail-log backup.
RESTORE LOG AdventureWorks2008R2
   FROM  DISK = 'C:\AdventureWorks2008R2_Log.bck'
   WITH NORECOVERY;
GO
-- Step 5: Recover the database.
RESTORE DATABASE AdventureWorks2008R2
   WITH RECOVERY;
GO