SQL Server Missed Backup: Verify Full and Log Backup Chains
Checks the latest successful full/differential/log backups and SQL Agent job failures, then closes the RPO gap without breaking the backup chain.
Operational Safety & Risk Notice
This runbook contains operational intervention steps; several are write-impacting (KILL, terminate, DROP, RESIZE). Verify in a staging environment first, and apply sequentially in production with verification.
1. Symptom & Signals
- M33'te full yedek yaşı hedefi aşıyor, log yedeği aralığı uzuyor veya SQL Agent backup job başarısız.
- `msdb.dbo.backupset` içinde beklenen başarılı yedek kaydı yok. **Bu yalnızca o instance'ın msdb geçmişidir**; harici/managed yedekleri dışlayabilir.
2. Business & Technical Impact
Felaket halinde son sağlam yedeğe kadar veri kaybı (RPO) ve kurtarma süresinde artış (RTO). FULL/BULK_LOGGED modelde log yedeği alınmıyorsa transaction log büyüyebilir; `mssql-transaction-log-full` senaryosunu tetikleyebilir.
3. Diagnosis & Root-Cause Analysis
SELECT d.name, d.recovery_model_desc,
MAX(CASE WHEN b.type = 'D' THEN b.backup_finish_date END) AS last_full,
MAX(CASE WHEN b.type = 'I' THEN b.backup_finish_date END) AS last_diff,
MAX(CASE WHEN b.type = 'L' THEN b.backup_finish_date END) AS last_log
FROM sys.databases AS d
LEFT JOIN msdb.dbo.backupset AS b ON b.database_name = d.name
WHERE d.database_id > 4 AND d.state_desc = 'ONLINE'
GROUP BY d.name, d.recovery_model_desc
ORDER BY d.name;`SIMPLE` modelde log yedeği beklemeyin. `COPY_ONLY` full yedek, differential base'i değiştirmez; normal full zincirini ayrıca değerlendirin.
4. Remediation & Action Plan
BACKUP DATABASE [OrnekDb]
TO DISK = N'D:\SQLBackups\OrnekDb_emergency_copy_20261103.bak'
WITH COPY_ONLY, CHECKSUM, STATS = 10;Bu, normal full job'ının yerine **kalıcı olarak geçmez**; log aralığının uygunluğunu ayrıca inceleyin.
BACKUP LOG [OrnekDb]
TO DISK = N'D:\SQLBackups\OrnekDb_log_20261103_001.trn'
WITH CHECKSUM, STATS = 10;Düzenli job'ı hemen onarıp yeniden başlatın; harici yedek yazılımının zincir politikasıyla koordinasyon kurun.
5. **Kalıcı çözüm:** Yedek başarı alarmına ek olarak dosya varlığı, yaşı, otomatik restore testi ve RPO/RTO karşılanmasını izleyecek iş akışı kurun.
5. Verification & Health Checks
- `msdb.dbo.backupset` içinde yeni yedek `backup_finish_date` ile görünüyor; dosya hedef depolamada mevcut.
- `RESTORE VERIFYONLY FROM DISK = N'D:\SQLBackups\OrnekDb_emergency_copy_20261103.bak' WITH CHECKSUM;` hatasız. **VERIFYONLY gerçek restore testi değildir**; izole sunucuda tam restore + gerekiyorsa differential/log zinciriyle açılma testi yapın.
- M33 RPO hedefine indi, bir sonraki planlı SQL Agent job başarılı tamamlandı.
6. Rollback & Contingency Plan
- Yedek almak veri değişikliği değildir; oluşturulan dosyayı hemen silmek yerine retention ve zincir güvenliğine göre saklayın.
- Job değişikliğini önceki yapılandırmasına döndürün; bir kere kaçırılan RPO zaman aralığı sonradan tamamen geri alınamaz.