lsnmysql_SQLServer数据库事务⽇志序列号(LSN)介绍⽇志序列编号(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值,以便你⾃⼰清楚下⼀步应该应⽤哪个⽇志呢?没关系,storehistory表存储了每⼀个数据库还原信息。你可以引⽤msdb..backupset表,你可以现存储事务⽇志的最后⼀个事务⽇志备份,它的LastLSN查询语句如下:
SELECT TOP pe, b.first_lsn, b.last_lsn, b.checkpoint_lsn, b.database_backup_lsn
storehistory 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
SELECT s.database_name,
m.physical_device_name,
cast(s.backup_size/1000000 as varchar(14))+' '+'MB' as bkSize,
CAST (DATEDIFF(second,s.backup_start_date , s.backup_finish_date)AS VARCHAR(4))+' '+'Seconds' TimeTaken,
s.backup_start_date,
CASE s.[type]
WHEN 'D' THEN 'Full'
WHEN 'I' THEN 'Differential'
WHEN 'L' THEN 'Transaction Log'
END as BackupType,
s.server_name,
FROM msdb.dbo.backupset s
inner join msdb.dbo.backupmediafamily m
dia_set_id = m.media_set_id
sqlserver备份表语句
WHERE s.database_name = 'demo'
ORDER BY database_name, backup_start_date, backup_finish_date

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。