MSSQL Ошибка 9005: Database cannot be opened invalid log file formatting
- База данных не стартует:
Msg 9005, Level 16, State 1: Database 'DatabaseName' cannot be opened because of invalid log file formatting. - База переходит в состояние
RECOVERY PENDINGилиSUSPECTпосле перезагрузки сервера. - В журнале Windows Event Log зафиксированы сообщения о повреждении заголовка LDF-файла или неверном размере сектора.
- Служба 1С:Предприятие сообщает об ошибке соединения с информационной базой.
1. Проверка текущего состояния базы данных
SELECT name, state_desc, user_access_desc FROM sys.databases WHERE name = 'DatabaseName';2. Перевод базы в аварийный режим EMERGENCY
ALTER DATABASE [DatabaseName] SET EMERGENCY;
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;3. Принудительное пересоздание журнала транзакций (Rebuild Log)
Если файл журнала поврежден, его можно отсечь и пересоздать с нуля с помощью аварийного режима:
-- Пересоздание поврежденного журнала транзакций
DBCC CHECKDB ('DatabaseName', REPAIR_ALLOW_DATA_LOSS);
GO
-- Альтернативный вариант прямого пересоздания лога (если CHECKDB не помог):
ALTER DATABASE [DatabaseName] REBUILD LOG ON
(NAME = 'DatabaseName_Log', FILENAME = 'D:\MSSQL\Data\DatabaseName_Log_new.ldf');
GO4. Возврат базы в нормальный режим работы
ALTER DATABASE [DatabaseName] SET MULTI_USER;
ALTER DATABASE [DatabaseName] SET ONLINE;5. Обязательное создание полной резервной копии
После пересоздания LDF-файла цепочка LSN журнала транзакций разрывается. Немедленно сделайте свежий бэкап:
BACKUP DATABASE [DatabaseName] TO DISK = 'C:\Backup\DatabaseName_After_RebuildLog.bak' WITH FORMAT, INIT, CHECKSUM; Частые вопросы (FAQ)
Почему возникает ошибка 9005?
Ошибка 9005 свидетельствует о повреждении структуры VLF (Virtual Log Files) внутри файла журнала транзакций .ldf: некорректная сигнатура блока, несовпадение размера секторов диска (например, перенос LDF с диска 512e на диск с нативным 4Kn) или обрыв записи заголовка.
Теряются ли данные при аварийном пересоздании лога (REBUILD LOG)?
Теряются только незафиксированные транзакции, которые находились в активной части журнала на момент сбоя. Все данные, зафиксированные на страницах MDF до падения, сохраняются.
Почему после пересоздания лога инкрементальные бэкапы (LOG Backup) падают?
Пересоздание файла журнала полностью аннулирует текущую последовательность номеров LSN. Выгрузка Transaction Log не сможет работать до тех пор, пока не будет выполнен новый FULL BACKUP.
Как избежать повреждения логов при переносе баз на новые дисковые массивы?
Всегда переносите базу через штатные процедуры BACKUP / RESTORE вместо копирования файлов (Detach/Attach), чтобы SQL Server корректно отформатировал блоки VLF под новый размер сектора накопителя.