MSSQL-BACKUP-001 · Missing or old backups
| Severity | Confidence | Permission | Applies to |
|---|---|---|---|
| Critical | Confirmed | db_datareader on msdb |
SQL Server 2017+, Azure SQL MI, RDS (not Azure SQL Database) |
What it checks
For every online database (except tempdb and snapshots), the latest backup recorded in msdb.dbo.backupset:
- No full backup ever recorded.
- Full and differential older than 8 days (
full_max_hours: 192). - Log backup older than 24 hours (
log_max_hours: 24) for databases inFULLorBULK_LOGGEDrecovery.
Copy-only backups are ignored.
Why it matters
Without a recent full backup, a failure loses everything since the last one. In FULL recovery without log backups,
point-in-time recovery is impossible and the log keeps growing.
Next action
-- See recent history for one database
SELECT TOP (20) database_name, type, backup_finish_date
FROM msdb.dbo.backupset WHERE database_name = N'<db>' ORDER BY backup_finish_date DESC;
Check the backup jobs (SQL Agent, Ola Hallengren, your backup tool) and run a manual backup now.
Limitations
- Backups taken by tools that don't write to
msdbhistory are invisible. If that is your case, the finding is a false positive. msdbhistory may have been purged (sp_delete_backuphistory).