如何设置、维护和联机温备用服务器 (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