MSSQLSERVER_9001

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

Сведения

Атрибут значение
Название продукта SQL Server
Идентификатор события 9001
Источник событий MSSQLSERVER
Компонент SQLEngine
Символическое имя LOG_NOT_AVAIL
Текст сообщения Журнал для базы данных «%.*ls» недоступен. Проверьте журнал событий на наличие сообщений о связанных ошибках. Устраните все ошибки и заново запустите базу данных.

Пояснение

Ошибка 9001 возникает, когда файл журнала базы данных становится недоступным. Если журнал базы данных переходит в автономный режим, то есть произошла серьезная ошибка, которая предотвращает выполнение транзакций в базе данных. Такой сбой требует перезапуска базы данных или восстановления резервной копии. Ошибка показывает конечный результат, но не объясняет, что привело к этому состоянию. Некоторые другие проблемы привели к тому, что журнал недоступен, и необходимо изучить базовую проблему. Ниже приведен пример отображения ошибки в журнале ошибок SQL.

Error: 9001, Severity: 21, State: 5.
The log for database 'ContosoDb' is not available. Check the operating system error log for related error messages. Resolve any errors and restart the database.

Часто возникает ошибка 9001 вместе с другими ошибками, которые предоставляют более конкретные объяснения о первопричине. Примеры включают ошибки 9002, 3313, 3314, 17204 (отображает ошибку ОС при доступе к файлу), 17053 (отображается ошибка ОС), 823.

В некоторых ситуациях SQL Server пытается перезапустить базу данных во время выполнения и выполнить восстановление, или она может перезапустить (всю службу). Если автоматическая перезагрузка базы данных не выполнена или не произошла, вы можете попытаться перезапустить SQL Server и проверить, успешно ли восстановление базы данных приведет к сети. В противном случае необходимо устранить основную причину недоступности журнала транзакций. Это пример сообщения об ошибке 3422, на который показано перезапуск базы данных:

Database ContosoDb was shutdown due to error 9001 in routine 'XdesRMFull::CommitInternal'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.

Следующее сообщение указывает, что перезагрузка SQL Server выполняется:

Error: 3449, Severity: 21, State: 1.
SQL Server must shut down in order to recover a database (database ID 2). The database is either a user database that could not be shut down or a system database. Restart SQL Server. If the database fails to recover after another startup, repair or restore the database.

Причина

Журнал транзакций базы данных может стать недоступным по многим причинам. Ниже приведены некоторые примеры.

  • Файл журнала транзакций находится на устройстве хранения, которое не удалось или недоступно
  • Физически поврежденный файл журнала транзакций, который приводит к невозможности записи в файл журнала или чтения из файла журнала
  • Неспособность доступа к файлу из-за сбоя шифрования или расшифровки с помощью прозрачного шифрования данных (TDE)
    • Служба хранилища ключей недоступна
    • Модуль поставщика EKM запускается в исключение, ошибку или другую проблему, которая предотвращает успешную операцию.
  • Полный журнал транзакций из-за больших транзакций, низкого места на диске или ограничений размера файла, введенных в журнал транзакций. Ошибка 9002 может находиться в журнале ошибок SQL Server до 9001 года. Дополнительные сведения см. в MSSQLSERVER_9002

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

Сначала устраните ошибки, предшествующие 9001. Затем попытайтесь перезапустить экземпляр SQL Server, чтобы восстановить базу данных, если это еще не произошло.

Устранение ошибок полного журнала транзакций

Вы можете наблюдать ошибку 9002 до ошибки 9001. Ниже приведен пример:

Error: 9002, Severity: 17, State: 9.
The transaction log for database 'ContosoDb' is full due to 'AVAILABILITY_REPLICA'.
Error: 3314, Severity: 21, State: 3.
During undoing of a logged operation in database 'ContosoDb' (page (1:32573799) if any), an error occurred at log record ID (7672713:36228:159). Typically, the specific failure is logged previously as an error in the operating system error log. Restore the database or file from a backup, or repair the database.
State information for database 'ContosoDb' - Hardened Lsn: '(7672713:38265:1)'    Commit LSN: '(7672712:1683087:46)'    Commit Time: 'Jul  1 2021  5:51AM'
Database ContosoDb was shutdown due to error 3314 in routine 'XdesRMReadWrite::RollbackToLsn'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.
Always On Availability Groups connection with secondary database terminated for primary database 'ContosoDb' on the availability replica 'PRDAT1ANLYSQL05' with Replica ID: {38a71ff9-f0ee-4737-9255-bb6a73e1c5d5}. This is an informational message only. No user action is required.
Error during rollback. shutting down database (location: 1).

Error: 9001, Severity: 21, State: 5.
The log for database 'ContosoDb' is not available. Check the operating system error log for related error messages. Resolve any errors and restart the database.

Recovery of database 'ContosoDb' (6) is 0% complete (approximately 60466 seconds remain). Phase 2 of 3. This is an informational message only. No user action is required.

В таких случаях сосредоточьтесь на разрешении первопричины — полного журнала транзакций

Сведения об устранении полного журнала транзакций см. в разделе "Устранение неполадок с полным журналом транзакций" (ошибка SQL Server 9002)

  • Убедитесь, что вы освобождаете пространство журнала транзакций и узнаете, почему он не был освобожден
  • Освободить место на диске, в котором находится журнал транзакций
  • Разверните существующий файл журнала или добавьте новый при необходимости в некоторых случаях

Устранение проблем с оборудованием и ОС и восстановление из резервной копии при необходимости

Часто возникает ошибка 9001, когда файл журнала транзакций поврежден или из-за проблем с устройством хранения, которые делают файл журнала недоступным. Ниже приведены два примера ошибок, которые могут возникнуть:

Пример, в котором том хранилища стал недоступным, и ос вернул ошибку "Устройство не готово". Вы можете увидеть другие ошибки, которые привели к повреждению дисков при недоступности. Эти примеры предоставляют контекст, чтобы понять, что ошибка 9001 является лишь одним из многих симптомов более крупной проблемы.

Error: 823, Severity: 24, State: 2.
The operating system returned error 21(The device is not ready.) to SQL Server during a read at offset 0x000009afde6000 in file 'G:\Data\Files\ContosoDb_4.ldf'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

Error: 9001, Severity: 21, State: 3.
The log for database 'ContosoDb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.

Database ContosoDb was shutdown due to error 9001 in routine 'XdesRMFull::CommitInternal'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.

Starting up database 'ContosoDb'.
Error: 17204, Severity: 16, State: 1.
FCB::Open failed: Could not open file G:\Data\Files\ContosoDb.mdf for file number 1.  OS error: 3(The system cannot find the path specified.).
Error: 5120, Severity: 16, State: 101.
Unable to open the physical file "G:\Data\Files\ContosoDb.mdf". Operating system error 3: "3(The system cannot find the path specified.)".
Error: 17207, Severity: 16, State: 1.
FileMgr::StartPrimaryDataFiles: Operating system error 2(The system cannot find the file specified.) occurred while creating or opening file 'G:\Data\Files\ContosoDb_0.ndf'. Diagnose and correct the operating system error, and retry the operation.

Ниже приведен еще один пример, в котором ОС сообщает об ошибках устройства, что приводит к недоступности журнала транзакций для нескольких баз данных:

Error: 17053, Severity: 16, State: 1.
SQLServerLogMgr::LogWriter: Operating system error 1117(The request could not be performed because of an I/O device error.) encountered.


Error: 9001, Severity: 21, State: 4.
The log for database 'ContosoDb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.
Always On Availability Groups data movement for database 'ContosoDb' has been suspended for the following reason: "system" (Source ID 2; Source string: 'SUSPEND_FROM_REDO'). To resume data movement on the database, you will need to resume the database manually. For information about how to resume an availability database, see SQL Server Books Online.


Error: 9001, Severity: 21, State: 16.
The log for database 'tempdb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.
Error: 3449, Severity: 21, State: 1.
SQL Server must shut down in order to recover a database (database ID 2). The database is either a user database that could not be shut down or a system database. Restart SQL Server. If the database fails to recover after another startup, repair or restore the database.

В то же время журнал событий Системы Windows сообщает об ошибках устройства хранения:

Warning       NODEDB1 129     pvscsi     Reset to device, \Device\RaidPort2, was issued.
Warning       NODEDB1 153     Disk       The IO operation at logical block address 0xxxxxxxx for Disk 4 (PDO name: \Device\0000007f) was retried.

Для решения таких проблем:

  • Убедитесь, что тома хранилища, в которых находятся файлы базы данных и журналов, находятся в сети, что весь путь ввода-вывода от компьютера к хранилищу является стабильным и надежным, и что он не приводит к физическому повреждению файлов.
  • Обратитесь к изготовителю оборудования и устройства, чтобы обеспечить соответствие оборудования и его конфигурации требованиям к ввода-выводам системы базы данных. Убедитесь, что драйверы устройств, встроенное ПО, BIOS и другие вспомогательные компоненты программного обеспечения в пути ввода-вывода актуальны.
  • Запустите DBCC CHECKDB, чтобы проверить согласованность базы данных, если она может быть подключена к сети после перезапуска.
  • Если файлы базы данных и журналов не остаются без изменений, и в результате база данных не может войти в сеть, восстановите последнюю известную хорошую резервную копию базы данных.
  • Рекомендации по устранению неполадок см. в статье об ошибке MSSQLSERVER 823 и устранении ошибок согласованности базы данных, сообщаемых DBCC CHECKDB.

Устранение сбоя шифрования или описания TDE

Если вы используете внешнюю службу управления ключами (EKM)/аппаратные модули безопасности (HSM), убедитесь, что модули, предоставляемые службой, стабильны и обновлены. Обратитесь к поставщику поставщика EKM/HSM, чтобы устранить любые проблемы с модулями, выполняющими шифрование и расшифровку файлов.

При возникновении этой проблемы могут наблюдаться следующие симптомы в журнале ошибок SQL:

**Dump thread - spid = 0, EC = 0x0000023FDA293320
***Stack Dump being sent to F:\Data\MSSQL13.INST1\MSSQL\LOG\SQLDump0007.txt
* *******************************************************************************
*
* BEGIN STACK DUMP:
*   11/22/22 12:04:58 spid 1
*
* Crypto Exception
*

00007FFBA0C81791 Module(ntdll+0000000000051791)
Stack Signature for the dump is 0x00000000D3AC1708
External dump process return code 0x20000001.  External dump process returned no errors.

Error: 15466, Severity: 16, State: 28.
An error occurred during decryption.
Error: 9001, Severity: 21, State: 16.
The log for database 'ContosoDb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.