日志序列编号(LSN)是事务日志里面每条记录的编号。数据库
当你执行一次备份时,一些LSN值就被同时存储在文件自己及msdb..backupset表中。你能够使用RESTORE HEADERONLY语法来从备份文件中获取LSN值。 ide
注意:在SQL Server 2000中,有一列叫作DifferentialBaseLSN。但在SQL Server 2005中,相同的列名称变成了DatabaseBackupLSN。正解的列名应该是DatabaseBackupLSN,这个名称才能表达出它的意义,你能够从SQL Server 2000的联机丛书中找到相关说明。.net
FirstLSN值是备份设备中第一个事务的日志序列号,LastLSN值是最后一个。CheckpointLSN值是最近一次checkpoint日志的序列号。DatabaseBackupLSN是最近一次数据库完整备份的日志序列号。rest
那么LSN值对咱们来讲,有什么价值呢?对于差别备份设备来讲,DatabaseBackupLSN值能够告诉咱们数据库完整备份都须要哪些差别备份。你须要找出全部CheckpointLSN值相同的完整备份和差别备份。日志
对于一个事务日志备份来讲,在数据库还原过程当中,FirstLSN和LastLSN值能够帮助咱们对事务日志文件按序号进行排序。blog
假如数据库正处于还原状态,并且正在等待另外的还原事务日志,那你怎么能分辨出它当前的LastLSN值,以便你本身清楚下一步应该应用哪一个日志呢?不要紧,msdb..restorehistory表存储了每个数据库还原信息。你能够引用msdb..backupset表,你能够找现存储事务日志的最后一个事务日志备份,它的LastLSN查询语句以下:排序
SELECT TOP 1 b.type, b.first_lsn, b.last_lsn, b.checkpoint_lsn, b.database_backup_lsn
FROM msdb..restorehistory a
INNER JOIN msdb..backupset b ON a.backup_set_id = b.backup_set_id
WHERE a.destination_database_name = 'AdventureWorks'
ORDER BY restore_date DESC事务