SQL Server数据库事务日志序列号(LSN)介绍
原文:http://blog.csdn.net/tjvictor/article/details/5251463
?
? 日志序列编号(LSN)是事务日志里面每条记录的编号。
当你执行一次备份时,一些LSN值就被同时存储在文件本身及msdb..backupset表中。你可以使用RESTORE HEADERONLY语法来从备份文件中获取LSN值。
注意:在SQL Server 2000中,有一列叫做DifferentialBaseLSN。但在SQL Server 2005中,相同的列名称变成了DatabaseBackupLSN。正解的列名应该是DatabaseBackupLSN,这个名称才能表达出它的意义,你可以从SQL Server 2000的联机丛书中找到相关说明。
FirstFSN值是备份设备中第一个事务的日志序列号,LastLSN值是最后一个。CheckpointLSN值是最近一次checkpoint日志的序列号。DatabaseBackupLSN是最近一次数据库完整备份的日志序列号。
那么LSN值对我们来说,有什么价值呢?对于差异备份设备来说,DatabaseBackupLSN值可以告诉我们数据库完整备份都需要哪些差异备份。你需要找出所有CheckpointLSN值相同的完整备份和差异备份。
对于一个事务日志备份来说,在数据库还原过程中,FirstLSN和LastLSN值可以帮助我们对事务日志文件按序号进行排序。
假如数据库正处于还原状态,而且正在等待另外的还原事务日志,那你怎么能分辨出它当前的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
本文翻译自sqlbackuprestore,更多精彩内容请浏览http://www.sqlbackuprestore.com
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。