DBAtlas · Veritabanı operasyon atlası

msdb'den yedek geçmişi ve eksik yedek kontrolü

SQL ServerYedek & Log

Komut

-- Her veritabani icin son FULL / DIFF / LOG (hic yedegi olmayanlar ustte):
SELECT d.name AS db,
       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,
       DATEDIFF(MINUTE, MAX(CASE WHEN b.type = 'L' THEN b.backup_finish_date END), GETDATE()) AS log_age_min
FROM   sys.databases d
  LEFT JOIN msdb.dbo.backupset b
         ON b.database_name = d.name AND b.is_copy_only = 0
WHERE  d.name <> N'tempdb'
GROUP BY d.name, d.recovery_model_desc
ORDER BY last_full;

-- Tek DB icin son 7 gunun zinciri (LSN, boyut, dosya):
SELECT b.backup_start_date, b.backup_finish_date, b.type, b.is_copy_only,
       b.first_lsn, b.last_lsn, b.database_backup_lsn,
       CAST(b.backup_size / 1048576.0 AS DECIMAL(12,1))            AS size_mb,
       CAST(b.compressed_backup_size / 1048576.0 AS DECIMAL(12,1)) AS compressed_mb,
       b.has_backup_checksums, mf.physical_device_name
FROM   msdb.dbo.backupset b
  JOIN msdb.dbo.backupmediafamily mf ON mf.media_set_id = b.media_set_id
WHERE  b.database_name = N'Musteri'
  AND  b.backup_start_date >= DATEADD(DAY, -7, GETDATE())
ORDER BY b.backup_start_date;

Ne yapar?

Her veritabanının son FULL/DIFF/LOG yedek zamanını ve log yedeğinin yaşını; tek veritabanı için LSN sırası, sıkıştırılmış boyut, checksum ve dosya yoluyla yedek zincirini listeler.

Ne zaman kullanılır?

Sabah kontrolünde, restore öncesi hangi dosyaların gerektiğini bulmak için, denetimde "son yedek ne zaman" sorusuna, log dolması alarmında log yedeği çalışıyor mu bakmak için.

Dikkat

msdb yalnız bu instance'ın aldığı yedekleri bilir; başka sunucuda alınan veya AG'de diğer replikada alınan yedekler görünmez (AG'de her replikada kontrol et). Bir log yedeğinin first_lsn'i bir öncekinin last_lsn'ine eşit olmalı; boşluk zincirin kırık olduğunu gösterir. FULL modda last_log NULL ise log hiç yedeklenmiyor ve büyüyecektir. Sadece sorgu; risksiz.

DBAtlas'ta aç →

İlgili