如何应用事务日志备份 (Transact-SQL)
若要将事务日志备份应用到数据库,必须满足下列条件:
创建最新的完整数据库备份或差异数据库备份之前,数据库必须使用完整恢复模式或大容量日志恢复模式。
还原早期备份时,还原顺序必须指定 WITH NORECOVERY。
必须按照创建日志备份的顺序应用它们,并且日志链没有间隔。除了上一次日志备份,还必须使用 WITH NORECOVERY,如下所示:
RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY;
应用上一次日志备份时,可以执行下列操作之一:
作为上一个 BACKUP LOG 语句的一部分恢复数据库:
RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY; GO
等待使用单独的 RESTORE DATABASE 语句恢复数据库:
RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; RESTORE DATABASE <database_name> WITH RECOVERY; GO
通过等待恢复数据库,可以确认已还原所有必需的日志备份。执行时点还原时最好使用该方法。
重要提示: |
---|
我们建议您在每个 RESTORE 语句中显式指定 WITH NORECOVERY 或 WITH RECOVERY 以消除混淆。在编写脚本时,这样做尤其重要。 |
应用事务日志备份
执行 RESTORE LOG 语句应用事务日志备份,同时指定:
- 事务日志将应用到的数据库的名称。
- 将从其中还原事务日志备份的备份设备。
- NORECOVERY 子句。
此语句的基本语法如下:
RESTORE LOG database_name FROM <backup_device> WITH NORECOVERY。
其中,database_name 是数据库的名称,<backup_device>** 是包含要还原的日志备份的设备的名称。
对必须应用的每个事务日志备份重复步骤 1。
按照还原顺序还原了最后一个备份之后,可使用以下语句恢复数据库:
RESTORE database_name WITH RECOVERY
重要提示: 如果要创建镜像数据库,则省略恢复步骤。镜像数据库必须仍处于 RESTORING 状态。
示例
默认情况下,AdventureWorks 数据库使用简单恢复模式。以下示例要求修改数据库以使用完整恢复模式,如下所示:
ALTER DATABASE AdventureWorks SET RECOVERY FULL
A. 应用单个事务日志备份
以下示例开始时使用名为 AdventureWorks_1
备份设备上的完整数据库备份来还原 AdventureWorks
数据库。然后该示例应用名为 AdventureWorks_log
备份设备上的第一个事务日志备份。最后,该示例恢复数据库。
RESTORE DATABASE AdventureWorks
FROM AdventureWorks_1
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
FROM AdventureWorks_log
WITH FILE = 1,
WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks
WITH RECOVERY
GO
B. 应用多个事务日志备份
以下示例开始时使用名为 AdventureWorks_1
备份设备上的完整数据库备份来还原 AdventureWorks
数据库。然后该示例逐一使用名为 AdventureWorks_log
备份设备上的前三个事务日志备份。最后,该示例恢复数据库。
RESTORE DATABASE AdventureWorks
FROM AdventureWorks_1
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
FROM AdventureWorks_log
WITH FILE = 1,
NORECOVERY
GO
RESTORE LOG AdventureWorks
FROM AdventureWorks_log
WITH FILE = 2,
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks
FROM AdventureWorks_log
WITH FILE = 3,
WITH NORECOVERY
GO
RESTORE DATABASE AdventureWorks
WITH RECOVERY
GO
请参阅
任务
如何还原事务日志备份 (SQL Server Management Studio)
如何还原到某个时点 (SQL Server Management Studio)
如何创建事务日志备份 (Transact-SQL)
如何将数据库还原为标记的事务 (SQL Server Management Studio)
如何还原到故障点 (Transact-SQL)
如何还原到某个时间点 (Transact-SQL)
概念
其他资源
RESTORE (Transact-SQL)
SQL Server Management Studio 教程