MSSQL Ошибка 5172: Header for file is not a valid database header — Решение
- Сообщение:
Msg 5172, Level 16, State 15: The header for file 'D:\Data\Base1C.mdf' is not a valid database header. The PageVerify header property is incorrect. - Служба SQL Server не может примонтировать базу при старте.
- База данных переходит в статус
SUSPECT. - Повреждение сигнатуры страницы (Magic Number / Signature 0x01 или 0x00 в заголовке блока).
1. Анализ причины повреждения
Ошибка 5172 означает, что первые 8192 байта файла данных (страница 0) повреждены, заполнены нулями или мусорными байтами в результате аварии питания накопителя, сбоя контроллера RAID или воздействия вирусов-шифровальщиков.
2. Проверка дисковой подсистемы на аппаратные сбои
Откройте журнал событий Windows (System Event Log) и проверьте наличие ошибок драйверов дисков (disk, ntfs, volsnap, iaStorA):
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName=@('disk','Ntfs')} -MaxEvents 503. Восстановление базы из резервной копии (Основной метод)
RESTORE DATABASE [Base1C]
FROM DISK = N'D:\Backup\Base1C_LastValid.bak'
WITH REPLACE, RECOVERY;
GO4. Аварийный метод подмены заголовка (Для экспертов)
- Создайте новую пустую базу
Base1C_Tempс абсолютно идентичными именами файлов и размерами файловых групп. - Остановите службу SQL Server:
net stop MSSQLSERVER. - Скопируйте первые 8192 байта из нового файла
Base1C_Temp.mdfв поврежденныйBase1C.mdfс помощью hex-редактора. - Запустите службу и переведите базу в аварийный режим для выполнения
DBCC CHECKDB (..., REPAIR_ALLOW_DATA_LOSS).
Частые вопросы (FAQ)
Можно ли восстановить базу при ошибке 5172 без бэкапа?
Штатными средствами SQL Server — нет. Только с помощью ручной реконструкции заголовка в hex-редакторе или специализированных программ парсинга сырых страниц данных (MDF Recovery Tools).
Почему PageVerify property становится некорректным?
Потому что контрольная сумма сектора, записанная на странице, не сходится с рассчитанной контрольной суммой прочитанного блока данных, либо заголовок был частично перезаписан нулями (Torn Page).
Влияет ли антивирус на повреждение заголовков MDF?
Да, некоторые антивирусы при попытке заблокировать или очистить файл могут повреждать блокировки дескрипторов, что приводит к рассинхронизации кэша записи ОС и порче заголовка.
Как проверить остальные базы на сервере после ошибки 5172?
Немедленно запустите полную проверку всех баз: EXEC sp_MSforeachdb 'DBCC CHECKDB (?) WITH NO_INFOMSGS, ALL_ERRORMSGS;'