DBAtlas · Veritabanı operasyon atlası

Bozuk sayfaları bul (suspect_pages) ve sayfa bazında restore et

SQL ServerRestore & Kurtarma

Komut

-- 823/824 ve checksum hatasi alan sayfalar:
SELECT DB_NAME(sp.database_id) AS db, sp.file_id, sp.page_id,
       CASE sp.event_type WHEN 1 THEN '823/824 error' WHEN 2 THEN 'bad checksum'
            WHEN 3 THEN 'torn page'     WHEN 4 THEN 'restored'
            WHEN 5 THEN 'repaired'      WHEN 7 THEN 'deallocated by DBCC' END AS event_desc,
       sp.error_count, sp.last_update_date
FROM   msdb.dbo.suspect_pages sp
ORDER BY sp.last_update_date DESC;

-- Sayfa restore (ornek 1:336): FULL + sonraki log'lar + yeni log yedegi
RESTORE DATABASE [Musteri] PAGE = '1:336'
FROM DISK = N'D:\Backup\Musteri_full_20261008.bak' WITH NORECOVERY;
RESTORE LOG [Musteri] FROM DISK = N'D:\Backup\Musteri_log_1200.trn' WITH NORECOVERY;
BACKUP LOG [Musteri] TO DISK = N'D:\Backup\Musteri_log_pagetail.trn' WITH INIT;
RESTORE LOG [Musteri] FROM DISK = N'D:\Backup\Musteri_log_pagetail.trn' WITH RECOVERY;

-- Dogrula:
DBCC CHECKDB (N'Musteri') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Ne yapar?

msdb.dbo.suspect_pages'tan I/O (823/824), checksum ve torn page hatası alan sayfaları listeler; tek tek bozuk sayfaları FULL yedekten alıp log'larla güncel hale getirerek tüm veritabanını restore etmeden onarır.

Ne zaman kullanılır?

Error log'da 823/824 hatası, CHECKDB'de az sayıda sayfada consistency error veya kullanıcı sorgusu "incorrect checksum" ile düştüğünde.

Dikkat

FULL veya BULK_LOGGED recovery ve kesintisiz log zinciri gerekir. Online page restore yalnız Enterprise/Developer'da; diğer edition'larda veritabanı restore süresince offline olur. Allocation sayfaları (GAM/SGAM/PFS), file header ve boot page (1:9) bu yöntemle restore edilemez. 823/824 çoğunlukla depolama sorunudur; disk/controller/SAN tarafını incelemeden kapatma, hata tekrar eder. Sayfa sayısı fazlaysa tüm DB restore daha hızlıdır.

DBAtlas'ta aç →

İlgili