MSSQL Error 9004: An error occurred while processing the log — Решение
Ошибка 9004 указывает на фатальное повреждение структуры журнала транзакций во время его обработки ядром SQL Server (при откате/накате транзакций, создании контрольной точки или старте экземпляра).
- Сообщение:
An error occurred while processing the log for database '%.*ls'. If possible, restore from backup(Severity 21, State 1). - База данных переходит в аварийный статус
SUSPECTилиRECOVERY PENDING. - Служба SQL Server регистрирует сбой при попытке автоматического восстановления после рестарта.
- Сбои процессов кластера 1С с сообщением об отказе подсистемы блокировок СУБД.
1. Просмотр деталей повреждения в ERRORLOG
EXEC sys.sp_readerrorlog 0, 1, '9004';2. Перевод базы данных в режим EMERGENCY
ALTER DATABASE [YourDatabaseName] SET EMERGENCY;
GO
ALTER DATABASE [YourDatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO3. Диагностика целостности страниц данных
DBCC CHECKDB ([YourDatabaseName], NOINDEX);4. Принудительное пересоздание журнала транзакций (Rebuild Log)
ALTER DATABASE [YourDatabaseName] REBUILD LOG ON
(NAME = [YourDatabaseName_Log], FILENAME = 'D:\MSSQL\Data\YourDatabaseName_NewLog.ldf');
GO
ALTER DATABASE [YourDatabaseName] SET MULTI_USER;
GO
ALTER DATABASE [YourDatabaseName] SET ONLINE;
GO5. Процедура аварийного восстановления из бэкапа (Рекомендуемый метод)
Если пересоздание лога не удалось из-за повреждения системных страниц:
RESTORE DATABASE [YourDatabaseName]
FROM DISK = 'D:\Backups\Full_Backup.bak'
WITH REPLACE, RECOVERY; Частые вопросы (FAQ)
Почему ошибка 9004 переводит базу данных в статус Suspect?
Ядро СУБД не может гарантировать транзакционную консистентность (ACID) при повреждении структур LDF, поэтому в целях предотвращения дальнейшей порчи данных база изолируется.
Можно ли выполнить REBUILD LOG, если база находится в группе доступности Always On?
Нет. Базу необходимо предварительно исключить из группы доступности Always On (Remove from Availability Group) на первичной реплике, выполнить восстановление локально, после чего заново настроить синхронизацию.
Сохранятся ли регламентные задания 1С после пересборки лога?
Да, метаданные и прикладные таблицы 1С хранятся в первичном файле данных (.MDF) и при успешном REBUILD LOG не затрагиваются.
Как избежать появления ошибки 9004?
Исключите каталоги с файлами .ldf из сканирования файловых антивирусов, используйте надежные СХД с защитой кэша от потери питания и контролируйте целостность через DBCC CHECKDB.