MSSQLSERVER_9001

Se aplica a:SQL Server

Detalles

Atributo Value
Nombre de producto SQL Server
Id. de evento 9001
Origen de eventos MSSQLSERVER
Componente SQLEngine
Nombre simbólico LOG_NOT_AVAIL
Texto del mensaje El registro de la base de datos '%.*ls' no está disponible. Vea los mensajes de error relacionados en el registro de eventos. Corrija los errores y reinicie la base de datos.

Explicación

El error 9001 se produce cuando el archivo de registro de base de datos deja de estar disponible. Cuando el registro de la base de datos se queda sin conexión, significa que se ha producido un error grave que impide que se produzcan transacciones en la base de datos. Este error requiere que la base de datos se reinicie o que restaure una copia de seguridad. El error muestra el resultado final, pero no explica lo que llevó a este estado. Otro problema ha provocado que el registro no esté disponible y debe investigar el problema subyacente. Este es un ejemplo de cómo aparece el error en el registro de errores de 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.

Normalmente, el error 9001 se produce junto con otros errores que proporcionan una explicación más específica sobre la causa principal. Algunos ejemplos son los errores 9002, 3313, 3314, 17204 (muestra el error del sistema operativo al acceder a un archivo), 17053 (muestra el error del sistema operativo), 823.

En determinadas situaciones SQL Server intenta reiniciar la base de datos en tiempo de ejecución y realizar la recuperación, o bien puede reiniciarse (todo el servicio). Si un reinicio automático de la base de datos no se realiza correctamente o no se produce, puede intentar reiniciar SQL Server y ver si una recuperación de la base de datos trae correctamente la base de datos en línea. Si no es así, debe solucionar la causa subyacente de que el registro de transacciones no esté disponible. Este es un ejemplo del mensaje de error 3422 que muestra un reinicio de la base de datos:

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.

El mensaje siguiente indica que se va a producir un reinicio 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.

Causa

El registro de transacciones de la base de datos puede dejar de estar disponible por muchas razones. Algunos ejemplos son:

  • El archivo de registro de transacciones reside en un dispositivo de almacenamiento que produjo un error o no está disponible.
  • Un archivo de registro de transacciones dañado físicamente que conduce a la incapacidad de escribir o leer desde el archivo de registro
  • Incapacidad de acceder al archivo debido a un error de cifrado o descifrado a través del cifrado de datos transparente (TDE)
    • No se puede acceder al servicio Key Vault
    • El módulo del proveedor EKM se ejecuta en una excepción, un error u otro problema que impide una operación correcta.
  • Un registro de transacciones completo debido a transacciones grandes, poco espacio en disco o límites de tamaño de archivo impuestos en el registro de transacciones. El error 9002 se puede encontrar en el registro de errores SQL Server anterior a 9001. Para obtener más información, consulte MSSQLSERVER_9002

Acción del usuario

Resuelva primero los errores que preceden a 9001. A continuación, intente reiniciar la instancia de SQL Server para recuperar la base de datos, si aún no se ha producido.

Resolución de errores completos del registro de transacciones

Es posible que observe el error 9002 antes del error 9001. Este es un ejemplo:

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.

En tales casos, céntrese en resolver la causa principal: un registro de transacciones completo.

Para resolver el registro de transacciones completo, consulte Solución de problemas de un registro de transacciones completo (SQL Server error 9002).

  • Asegúrese de liberar espacio en el registro de transacciones y de averiguar por qué no se liberó.
  • Liberar espacio en disco donde reside el registro de transacciones
  • Expanda el archivo de registro existente o agregue uno nuevo si es necesario en algunos casos.

Resolución de problemas de hardware y sistema operativo y restauración a partir de una copia de seguridad si es necesario

Normalmente, el error 9001 se produce cuando un archivo de registro de transacciones está dañado o debido a problemas de dispositivos de almacenamiento que hacen que el archivo de registro no esté disponible. Estos son dos ejemplos de errores que puede observar:

Ejemplo en el que el volumen de almacenamiento dejó de estar disponible y el sistema operativo devolvió el error "El dispositivo no está listo". Puede ver otros errores que han provocado que los discos estén dañados en caso de que no estén disponibles. Estos ejemplos proporcionan contexto para que pueda comprender que el error 9001 es solo uno de los muchos síntomas de un problema mayor.

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.

Este es otro ejemplo en el que el sistema operativo notifica errores de dispositivo que conducen al registro de transacciones para que varias bases de datos no sean accesibles:

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.

Al mismo tiempo, el registro de eventos del sistema de Windows notifica errores del dispositivo de almacenamiento:

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.

Para solucionar estos problemas:

  • Asegúrese de que los volúmenes de almacenamiento en los que residen los archivos de base de datos y de registro estén en línea, que toda la ruta de acceso de E/S de la máquina al almacenamiento sea estable y confiable y que no produzca daños físicos en los archivos.
  • Trabaje con el fabricante de hardware y dispositivo para asegurarse de que el hardware y su configuración son adecuados para los requisitos de E/S de un sistema de base de datos. Asegúrese de que los controladores de dispositivos, el firmware, el BIOS y otros componentes de software auxiliares de la ruta de acceso de E/S estén actualizados.
  • Ejecute DBCC CHECKDB para comprobar la coherencia de la base de datos, si se puede poner en línea después de un reinicio.
  • Si los archivos de base de datos y de registro no están intactos y, como resultado, la base de datos no puede conectarse, restaure la última copia de seguridad correcta conocida de la base de datos.
  • Para obtener sugerencias de solución de problemas, consulte Error 823 de MSSQLSERVER y Solución de errores de coherencia de la base de datos notificados por DBCC CHECKDB.

Resolución de errores de cifrado o descripción de TDE

Si usa un servicio o proveedor externo de Administración extensible de claves (EKM)/Módulos de seguridad de hardware (HSM), asegúrese de que los módulos proporcionados por el servicio sean estables y actualizados. Trabaje con el proveedor EKM/HSM para resolver cualquier problema con los módulos que realizan el cifrado y descifrado de archivos.

Puede observar los siguientes síntomas en el registro de errores de SQL cuando se produce este problema:

**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.