适用范围:SQL Server
本文仅与使用完整恢复模式或大容量日志恢复模式的 SQL Server 数据库的备份和还原相关。
“结尾日志备份”捕获尚未备份的任何日志记录(日志尾部),以防工作丢失并确保日志链完好无损。 在将 SQL Server 数据库恢复到其最近一个时间点之前,必须先备份数据库的事务日志。 结尾日志备份是数据库恢复计划中相关的最后一个备份。
并非所有还原情形都需要尾日志备份。 如果恢复点包含在较早的日志备份中,则无需结尾日志备份。 如果要移动或替换(覆盖)数据库,并且不需要将其还原到最近一次备份之后的某个时间点,则无需进行尾日志备份。
需要结尾日志备份的场景
我们建议您在以下情况下执行尾日志备份:
如果数据库处于联机状态并且您计划对数据库执行还原操作,则从备份日志结尾开始。 为避免在线数据库出现错误,必须使用
WITH NORECOVERYTransact-SQL 语句的 BACKUP 选项。如果数据库处于脱机状态而无法启动,则需要还原数据库,从备份日志结尾开始。 由于此时不会发生任何事务,因此请使用
WITH NO_TRUNCATE选项。NO_TRUNCATE实际上与仅复制事务日志备份相同。 使用WITH NORECOVERY是可选的,因为此时不会发生任何事务。如果数据库损坏,则尝试使用
WITH CONTINUE_AFTER_ERROR语句的BACKUP选项执行结尾日志备份。在损坏的数据库上,仅当日志文件未受损、数据库处于支持结尾日志备份的状态并且数据库不包含任何大容量日志更改时,日志尾部备份才会成功。 如果无法创建结尾日志备份,则最新日志备份后提交的任何事务都将丢失。
下表汇总了用于 NORECOVERY 的 NO_TRUNCATE、CONTINUE_AFTER_ERROR 和 BACKUP 选项。
包含不完整备份元数据的结尾日志备份
结尾日志备份可捕获日志尾部,即使数据库脱机、损坏或缺少数据文件。 这可能导致从还原信息命令和 msdb 获取的元数据不完整。 但只有元数据是不完整的,而捕获的日志是完整且可用的。
如果结尾日志备份包含不完整的元数据,则 backupset 表中的 has_incomplete_metadata 设置为 1。 此外,在 RESTORE HEADERONLY 的输出中,HasIncompleteMetadata 被设置为 1。
如果结尾日志备份中的元数据不完整,则 backupfilegroup 表在结尾日志备份时会丢失文件组的大多数相关信息。 大多数 backupfilegroup 表列为 NULL;只有以下列有意义:
backup_set_idfilegroup_idtypetype_descis_readonly
相关任务
若要创建结尾日志备份,请参阅在数据库损坏时备份事务日志 (SQL Server)。
若要还原事务日志备份,请参阅还原事务日志备份 (SQL Server)。