Why this problem matters
A successful backup job alone does not prove that its file will be readable and usable when needed. Missing chains, inaccessible destinations, or unverified files increase recovery risk.
How to diagnose it
Review the latest full, differential, and log backup times by database from msdb history. Store results from checks such as RESTORE VERIFYONLY in separate automation records and distinguish them from actual restore tests.
The query reads msdb backup history and does not verify that a file exists or is readable. History may have been purged, and database renames can affect interpretation.
SELECT d.name,
MAX(CASE WHEN bs.type = 'D' THEN bs.backup_finish_date END) AS last_full_backup,
MAX(CASE WHEN bs.type = 'I' THEN bs.backup_finish_date END) AS last_diff_backup,
MAX(CASE WHEN bs.type = 'L' THEN bs.backup_finish_date END) AS last_log_backup
FROM sys.databases AS d
LEFT JOIN msdb.dbo.backupset AS bs
ON bs.database_name = d.name
AND bs.is_copy_only = 0
GROUP BY d.name
ORDER BY d.name;A safe solution approach
The backup policy must align with recovery-point and recovery-time objectives. Automate file validation, protect encryption keys, and schedule regular restore tests.
Why continuous monitoring matters
One missed log backup can affect the recovery chain and intended data-loss window. moon can monitor backup age and job outcomes and notify the responsible team through Slack, PagerDuty, or webhooks.
Frequently asked questions
Does a successful backup record prove recoverability? Does RESTORE VERIFYONLY replace a real restore test?
No, history only shows that SQL Server recorded the backup operation. RESTORE VERIFYONLY is useful, but it does not replace an actual restore and application validation on a target server.
How does moon help with this problem?
moon continuously observes SQL Server, PostgreSQL, and MongoDB signals, helping teams evaluate the problem as a trend instead of relying on a one-time check.