info@techdevops.com | 437-991-3573 | Data Engineering Services
TechDevOps.com
Resources Tools
Experts in Microsoft SQL Server on Windows, Linux, Containers | Clusters, Always On, FCI | Migrations, Cloud, Performance



Get the last Transaction Log Backup Per Database
by BFarrell (Principal Consultant; Architecture; Engineering)
2026-10-29







Get the last Transaction Log Backup Per Database

;WITH LastLogBackup AS (
SELECT
bs.database_name,
bs.backup_start_date,
bs.backup_finish_date,
bs.type,
bmf.physical_device_name AS backup_file_path,
CAST(bs.backup_size / 1024.0 / 1024.0 AS DECIMAL(10, 2)) AS backup_size_mb,
ROW_NUMBER() OVER (PARTITION BY bs.database_name ORDER BY bs.backup_finish_date DESC) AS RowNum
FROM msdb.dbo.backupset bs
INNER JOIN msdb.dbo.backupmediafamily bmf
ON bs.media_set_id = bmf.media_set_id
WHERE bs.type = 'L' -- Transaction Log
)
SELECT
d.name AS [DatabaseName],
d.recovery_model_desc AS [RecoveryModel],
Case llb.type
WHEN 'L' Then 'LOG'
END AS [Backup Type],
llb.backup_start_date AS [LastBackupStartDate],
llb.backup_finish_date AS [LastBackupFinishDate],
DATEDIFF(MINUTE, llb.backup_finish_date, GETDATE()) AS [MinutesSinceLastBackup],
llb.backup_size_mb AS [BackupSizeMB],
ISNULL(llb.backup_file_path, 'NO LOG BACKUP FOUND') AS [BackupFilePath]
FROM sys.databases d
LEFT JOIN LastLogBackup llb
ON d.name = llb.database_name AND llb.RowNum = 1
WHERE d.database_id > 4 -- Exclude system databases (master, tempdb, model, msdb)
AND d.source_database_id IS NULL -- Exclude database snapshots
ORDER BY d.name;