MSSQLSERVER_9004

Применимо к:SQL Server

Сведения

Атрибут значение
Название продукта SQL Server
Идентификатор события 9004
Источник событий MSSQLSERVER
Компонент SQLEngine
Символическое имя LOG_CORRUPT
Текст сообщения Произошла ошибка при обработке журнала для базы данных "%.*ls". Если возможно, восстановите из резервной копии. Если резервная копия недоступна, возможно, понадобится перестроить журнал.

Пояснение

Во время обработки журнала возникла ошибка при выполнении операции отката, восстановления или репликации. Это может указывать на ошибку, обнаруженную операционной системой или внутренней ошибкой согласованности, обнаруженной SQL Server.
Ядро СУБД SQL Server выполняет логические проверки согласованности содержимого журнала транзакций при чтении и обработке. Проверяются не все аспекты заголовков журнала, блоков журнала и записей журнала. Номер состояния содержит дополнительные сведения о типе сбоя.

  • Состояние 1. Поврежден заголовок виртуального файла журнала (VLF). Если поврежденный заголовок файла журнала обнаружен в процессе запуска базы данных при запуске службы, в журнале ошибок может отобразиться только ошибка 9004. Заголовок файла журнала — это первая часть каждого VLF-файла в журнале транзакций. Заголовок файла журнала не совпадает с заголовком отдельного файла или первыми 8 КБ файла журнала. Если заголовок файла журнала поврежден, может появиться сообщение 5172, похожее на сообщение о повреждении страницы заголовка файла базы данных.
  • Состояние 2–3. Недопустимый блок журнала при выполнении операции восстановления.
  • Состояние 4–12. Это различные проверки блоков журнала при обработке записей журнала. К ним относятся проверки четности, секторов и другие логические проверки согласованности журнала транзакций.

В большинстве случаев эта ошибка возникает только в журнале ошибок или журнале событий приложений Windows с идентификатором события (EventID) 9004, так как операция обработки журнала не основана на непосредственной команде пользователя (например, во время восстановления при запуске ядра SQL Server). В таких ситуациях ошибка 9004 часто встречается вместе с ошибкой 3414. Однако для выполнения некоторых запросов, например ALTER DATABASE, может потребоваться обработка журнала, поэтому эти ошибки будут возникать. Так как ошибка имеет уровень серьезности 21, сеанс пользователя отключен.

Причина

Ошибка 9004 — это общая ошибка, указывающая на то, что содержимое журнала транзакций повреждено. Причина, по которой журнал становится несогласованным, похожа на проблему повреждения базы данных, обнаруженную ядром SQL Server. Чтобы найти причину повреждения журнала, следует применять методы, аналогичные тем, которые используются при повреждении базы данных, включая анализ возможных проблем с оборудованием, файловой системой и вводом-выводом. Обратите внимание на то, что инструкция DBCC CHECKDB не проверяет журнал транзакций в составе его операций и не может обнаружить ошибки, связанные с повреждением журнала. Ошибка 9004 вызывается самим ядром SQL Server.

Действие пользователя

Одно из следующих действий исправит эту ошибку.

  • Восстановление из резервной копии: восстановление из известной хорошей резервной копии для восстановления после этой проблемы. Если часть журнала в резервной копии базы данных или журнала содержит поврежденное содержимое, при восстановлении может возникнуть ошибка 9004. В таком случае журнал транзакций в резервной копии будет поврежден.

  • Перестроение журнала. Если восстановление из резервной копии невозможно, вы можете подключить базу данных к сети, перестроив журнал транзакций. Вы должны четко понимать последствия перестроения журнала транзакций. К ним относится возможная потеря согласованности транзакций в базе данных. Дополнительные сведения о перестроении журнала транзакций см. в разделе об устранении ошибок в аварийном режиме базы данных.

  • Проверьте журналы системных проблем. Кроме того, проверьте журнал событий системы и журналы ошибок, чтобы определить проблемы в системе, которые могли вызвать проблему.