Log sequence numbers

Prev Page Next Page
Recovery models
Main backup types
Backing up the database files by copying
The transaction log
Transaction log restore sequence
Log sequence numbers
Truncating and shrinking the transaction log
Backing up the tail
Inside the transaction log
So, what's in a backup file?
Test: A full backup does not contain deleted data
Verifying backup files
Verifying backup files on a budget
Cumulative backups
Recovering individual tables
Backup and restore history details
Backup reads and writes
Speeding up backups
Backup speed details
Speeding up restores
Restore state affects speed too
Backup and restore rights
Log shipping
Log shipping in SQL Server 2000
Setting up log shipping using Enterprise Manager
Checking the set up
Log shipping in SQL Server 2005
Setting up log shipping using Management Studio
Checking the set up
Log shipping status report
Log shipping in SQL Backup
Using the CopyTool utility
3rd party backup applications
VDI versions
VDI errors
SQL Backup - beyond compression
Restoring a chain of transaction log backups
Restoring to the latest possible state
Backing up multiple databases
Backup retention
Making a copy of the backup file
Backup file naming conventions
Restoring the latest backup set
Network resilience
Integrated database verification
Database file relocation
Improved backup retention
High-availability group support
Common SQL Backup issues
Installation checklist
Setting up rights
Configuring service rights
Backup data
Hanging issues
Common backup and restore errors
Error 3201 - when performing a backup to a network share
Full database backup file is larger than database size
Error 3205 - Too many backup devices specified for backup or restore
Error 4305 - an earlier transaction log backup is required
Bringing a database that is in recovery or read-only mode online
Using bulk-logged recovery model but transaction log backup is still large
Error 14274 - unable to delete SQL Server Agent job
Error messages when restoring from different versions of SQL Server.
vdi error codes
Restore speed details
Help, my transaction log file is huge!
Mirror or log ship

Log sequence numbers, or LSN, are assigned to each record in the transaction log.

When you perform a backup, certain LSN values are stored both in the file itself, and in the msdb..backupset table.  You can retrieve the LSN values from a backup file using the RESTORE HEADERONLY syntax e.g.


In SQL Server 2000, there is a column named DifferentialBaseLSN.  In SQL Server 2005, the same column is named DatabaseBackupLSN.  The right column name should be DatabaseBackupLSN, as that is what it represents, and is also what is stated in the SQL Server 2000 Books Online documentation.

The FirstLSN value is the log sequence number of the first transaction in the backup set.  The LastLSN value is the log sequence number of the last transaction in the the backup set.  The CheckpointLSN value is the log sequence number of the most recent checkpoint.  The DatabaseBackupLSN is the log sequence number of the most recent full database backup.

So, what's the use of the LSN values to us?  For a differential backup set, the DatabaseBackupLSN value tells us which full database backup is required in order to apply the differential backup.  You need to look for a full database backup file that has a CheckpointLSN value equal to the differential backup's DatabaseBackupLSN value.


For a transaction log backup, the FirstLSN and LastLSN values help us to sort the transaction log files in sequence, during a restore process.


If a database is in a restoring state, waiting for additional transaction logs to be restored, how can you tell its current LastLSN value so that you know which log to apply next?  Well, the msdb..restorehistory table stores every restore that has been made to the database.  By referencing the msdb..backupset table, you can then find out the last transaction log backup that was restored, and also its LastLSN value e.g.

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

Document history
6/27/2008    Initial release.    
Copyright 2008 - 2021 Yohz Ventures Sdn Bhd. All rights reserved.
All product and company names are trademarks or registered trademarks of their respective owners.