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

适用范围:SQL Server

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

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

日志序列号的概述

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

注意

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

查看备份和还原使用的 LSN

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

注意

LSN 还显示在错误日志的某些消息中。

还原到 LSN 的 Transact-SQL 语法

通过使用 RESTORE 语句,可以在 LSN 处或刚好在 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  

Related Tasks

另请参阅

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