Поиск повреждённых страниц (suspect_pages) и восстановление отдельных страниц
SQL ServerВосстановлениеКоманда
-- Pages that hit 823/824 or checksum errors:
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;
-- Page restore (example 1:336): FULL + later logs + a new log backup
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;
-- Verify:
DBCC CHECKDB (N'Musteri') WITH NO_INFOMSGS, ALL_ERRORMSGS;Что делает
Выводит из msdb.dbo.suspect_pages страницы с ошибками I/O (823/824), контрольной суммы или torn page; исправляет отдельные повреждённые страницы, беря их из FULL-копии и накатывая журналы, без восстановления всей базы.
Когда использовать
При ошибках 823/824 в журнале ошибок, ошибках согласованности в CHECKDB, ограниченных несколькими страницами, или когда пользовательский запрос падает с "incorrect checksum".
Внимание
Требуется модель FULL или BULK_LOGGED и непрерывная цепочка журналов. Восстановление страниц в онлайне — только Enterprise/Developer; в других редакциях база во время восстановления в офлайне. Страницы выделения (GAM/SGAM/PFS), заголовки файлов и загрузочная страница (1:9) так восстановить нельзя. 823/824 обычно означает проблему хранилища; не закрывайте инцидент без проверки диска/контроллера/SAN, иначе он повторится. При большом числе плохих страниц полное восстановление базы быстрее.