恢复到日志序列号 (SQL Server)

适用范围:SQL Server

本主题仅与使用完整恢复模式或大容量日志恢复模式的 数据库相关。

您可以使用日志序列号 (LSN) 定义还原操作的恢复点。 但是,这是为工具供应商提供的专用功能,不太可能广泛使用。

日志序列号的概述

LSN 在 RESTORE 序列中内部使用,以跟踪数据已还原到的时间点。 还原备份后,数据被还原到与进行备份的时间点相对应的 LSN。 差异备份和日志备份可将已还原的数据库推进到更晚的时间点,对应于更高的 LSN。 有关 LSN 的详细信息,请参阅 SQL Server 事务日志体系结构和管理指南

注意

LSN 是数据类型为 numeric(25,0) 的值。 算术运算(例如加法或减法)对 LSN 没有任何意义,请不要与 LSN 一起使用。

查看备份和还原使用的 LSN

可以使用下列一种或多种方法查看发生特定备份和还原事件时的日志记录的 LSN:

注意

LSN 也会出现在错误日志中的某些消息中。

还原到 LSN 的 Transact-SQL 语法

通过使用 RESTORE 语句,可以在 LSN 之前或立即停止,如下所示:

  • 使用 WITH STOPATMARK ='lsn:<lsn_number>' 子句,其中 lsn:<lsnNumber> 是一个字符串,它指出包含指定 LSN 的日志记录是恢复点。

    STOPATMARK 前滚到 LSN 并包含该日志记录在前滚中。

  • 使用 WITH STOPBEFOREMARK ='lsn:<lsn_number>' 子句,其中 lsn:<lsnNumber> 是一个字符串,用于指定紧邻包含指定 LSN 编号的日志记录之前的日志记录为恢复点。

    STOPBEFOREMARK 前滚到 LSN 并从前滚中排除该日志记录。

通常会选择要包括或排除的特定事务。 虽然实践中并不总是如此,但指定的日志记录就是事务提交记录。

示例

以下示例假定 AdventureWorks 数据库已更改为使用完整恢复模式。

RESTORE LOG AdventureWorks FROM DISK = 'c:\adventureworks_log.bak'   
WITH STOPATMARK = 'lsn:15000000040000037'  
GO  

相关任务

另请参阅

应用事务日志备份 (SQL Server)
事务日志 (SQL Server)
RESTORE (Transact-SQL)
还原和恢复概述 (SQL Server)
SQL Server 事务日志体系结构和管理指南