如何设置、维护备用服务器以及使其在线 (Transact-SQL)
设置备用服务器通常包括在主服务器上创建完整备份和定期事务日志备份,然后依次将那些备份应用到备用服务器。在还原操作之间,备用服务器保持只读状态。当需要使用备用服务器时,任何未完成的事务日志备份(包括来自主服务器的活动事务日志备份)都将应用到备用服务器,同时还要恢复数据库。
对主服务器创建备份
执行 BACKUP DATABASE 语句以创建完整备份。
执行 BACKUP LOG 语句以创建事务日志备份。
对每个希望随着时间变化创建的事务日志重复步骤 2。
设置和维护备用服务器
执行使用 NORECOVERY 子句的 RESTORE DATABASE 语句以还原步骤 1 中对主服务器创建的完整备份。
执行使用 STANDBY 子句的 RESTORE LOG 语句以应用步骤 2 中对主服务器创建的每个事务日志。在回滚未提交事务影响的数据页之前,指定包含那些数据页内容的撤消文件的名称。
注意: 为了获得更好的性能,在应用多个日志时,应该使用 WITH NORECOVERY。有时候,备用文件只需用作只读的故障转移副本,以便主体离线时可以使用。 对每个对主服务器创建的事务日志重复步骤 2。
使备用服务器在线(主服务器失败)
尽量备份当前活动事务日志(日志尾部)。若要在数据库无法正常启动的情况下创建尾日志备份,请使用 WITH NO_TRUNCATE 对主数据库执行 BACKUP LOG 语句。这是备用服务器在线后应用到备用服务器的最后一个事务日志备份。有关详细信息,请参阅如何创建事务日志备份 (Transact-SQL)。
执行使用 STANDBY 子句的 RESTORE LOG 语句以应用所有事务日志备份,包括在步骤 1 中创建的尚未应用到备用服务器的活动事务日志备份。
注意: 为了获得更高的性能,在应用多个日志记录时,应该使用 WITH NORECOVERY。有关何时使用 WITH STANDBY 以及何时使用 WITH NORECOVERY 的示例,请参阅下面的示例。 执行 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
请参阅
任务
如何在数据库已损坏时备份事务日志 (Transact-SQL)
概念
其他资源
RESTORE (Transact-SQL)
将数据库还原到备份中的某个时间点
SQL Server Management Studio 教程