共用方式為


如何:設定、維護並使暖待命伺服器恢復連線工作 (Transact-SQL)

設定待命伺服器的工作,通常包含在主要伺服器建立完整備份及定期的交易記錄檔備份,然後依序將這些備份套用到待命伺服器。在還原之間待命伺服器處於唯讀狀態。當待命伺服器必須開放使用時,主要伺服器上任何未完成的交易記錄檔 (包括作用中交易記錄檔的備份) 都會被套用到待命伺服器上,且資料庫也會被復原。

在主要伺服器上建立備份

  1. 執行 BACKUP DATABASE 陳述式以建立完整備份。

  2. 執行 BACKUP LOG 陳述式以建立交易記錄檔備份。

  3. 若想建立交易記錄檔,請重複步驟 2。

設定及維護待命伺服器

  1. 使用 NORECOVERY 子句執行 RESTORE DATABASE 陳述式,以還原步驟 1 在主要伺服器上所建立的完整備份。

  2. 使用 STANDBY 子句執行 RESTORE LOG 陳述式,將步驟 2 所建立的每個交易記錄檔套用到主要伺服器上。在影響資料頁的未約束交易復原之前,指定包含資料頁內容的復原檔案名稱。

    [!附註]

    若要提升效能,應在套用多個記錄檔時使用 WITH NORECOVERY。有時候,待命資料庫檔案必須當做唯讀、容錯移轉複本,如此您便可以在主體離線時使用該檔案。

  3. 對每一個在主要伺服器上所建立的交易記錄檔,重複執行步驟 2。

啟動待命伺服器線上作業 (主要伺服器故障)

  1. 可能的話,請備份目前使用中交易記錄檔 (記錄檔的結尾)。若要在資料庫無法正常啟動時建立結尾備份,請使用 WITH NO_TRUNCATE 在主要資料庫上執行 BACKUP LOG 陳述式。這是待命伺服器恢復連線工作時,要套用的最後一個交易記錄檔備份。如需詳細資訊,請參閱<如何:建立交易記錄備份 (Transact-SQL)>。

  2. 使用 STANDBY 子句執行 RESTORE LOG 陳述式,以套用尚未套用到待命伺服器上的所有交易記錄檔備份,包括在步驟 1 所建立的作用中交易記錄檔備份。

    [!附註]

    若要提升效能,應在套用多個記錄檔時使用 WITH NORECOVERY。如需何時使用 WITH STANDBY 以及何時使用 WITH NORECOVERY 的範例,請參閱下面。

  3. 執行 RESTORE DATABASE WITH RECOVERY 陳述式,以復原資料庫並讓待命伺服器上線工作。

範例

這個範例在待命伺服器上設定 MyAdvWorks 資料庫。在兩次還原作業之間,可以唯讀模式使用此資料庫。

-- Restore the initial full backup on the standby server.
USE master
GO
RESTORE DATABASE MyAdvWorks
   FROM MyAdvWorks_1 
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the first transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log1
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the next transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log2
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Repeat for each transaction log backup created on the 
-- primary server.
--
-- Time elapses.. .. ..
--
-- The primary server has failed. Back up the 
-- tail of the transaction log on the primary server.
BACKUP LOG MyAdvWorks
   TO MyAdvWorks_log3
   WITH NO_TRUNCATE
GO
-- Apply the final (active) transaction log backup
-- to the standby server. All preceding transaction
-- log backups must have been already applied.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log3
   WITH NORECOVERY 
GO
-- Recover the database on the standby server, 
-- making it available for normal operations.
RESTORE DATABASE MyAdvWorks
   WITH RECOVERY
GO