Diagnóstico del error 9001 de Microsoft SQL Server: el registro de la base de datos no está disponible

20

Durante el fin de semana, un sitio web que ejecuté dejó de funcionar, registrando el siguiente error en el Visor de eventos cada vez que se realiza una solicitud al sitio web:

Id. De evento: 9001

El registro para la base de datos ' nombre de base de datos ' no está disponible. Consulte el registro de eventos para ver los mensajes de error relacionados. Resuelva cualquier error y reinicie la base de datos.

El sitio web está alojado en un servidor dedicado, por lo que puedo RDP en el servidor y hurgar. El LDFarchivo para la base de datos existe en la C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATAcarpeta, pero al intentar hacer cualquier trabajo con la base de datos desde Management Studio, aparece un cuadro de diálogo que informa el mismo error: 9001: el registro de la base de datos no está disponible ...

Esta es la primera vez que recibo este error, y he estado alojando este sitio (y otros) en este servidor web dedicado durante más de dos años.

Tengo entendido que este error indica un archivo de registro dañado. Pude volver a conectar el sitio web al desconectar la base de datos y luego restaurar una copia de seguridad de hace un par de días, pero mi preocupación es que este error es indicativo de un problema más siniestro, es decir, una falla del disco duro.

Envié un correo electrónico a la compañía de alojamiento web y esta fue su respuesta:

No parece haber ninguna otra indicación de la causa en el Registro de eventos, por lo que es posible que el registro esté dañado. Actualmente, los recursos de la memoria están al 87%, lo que también puede tener un impacto, pero es poco probable.

¿Puede el registro simplemente "corromperse"?

Mi pregunta: ¿Cuáles son los siguientes pasos que debo seguir para diagnosticar este problema? ¿Cómo puedo determinar si esto es, de hecho, un problema de hardware? Y si es así, ¿hay alguna opción más allá de reemplazar el disco?

Gracias

Scott Mitchell
fuente

Respuestas:

16

Más del 99% de los problemas de corrupción de la base de datos están relacionados con el sistema de almacenamiento. La mitad de los problemas restantes se deben a mala memoria, y la otra mitad son errores en SQL Server.

Lo más probable es que sea un problema de almacenamiento.

Si vuelve a ocurrir, ejecute DBCC CHECKDB en la base de datos y esto le dará más información sobre la corrupción y si el problema puede solucionarse sin hacer una restauración. Probablemente necesitará poner la base de datos en línea en modo de emergencia para ejecutar checkdb contra la base de datos.

El uso de la memoria al 87% no tiene nada que ver con el problema. SQL Server ejecutará la memoria hasta el 100% (o cerca de ella) por diseño.

mrdenny
fuente
Gracias por las sugerencias Realmente intenté hacer DBCC CHECKDB, pero obtuve muchos errores, incluido un error que decía que no podía encontrar el archivo de registro. Pero no intenté poner el DB en línea en modo de emergencia.
Scott Mitchell
Por lo general, si el registro de transacciones está dañado, es algo bastante malo. CHECKDB podría repararlo o no, dependiendo de qué tan grave sea la corrupción. Si tiene copias de seguridad del registro de transacciones (es posible que su proveedor no las permita), podría haber perdido casi ningún dato. Al final de la salida checkdb estará el nivel de reparación que se requiere para corregir los problemas con los archivos de la base de datos.
mrdenny
Correcto. El uso de la memoria no tendrá nada que ver con esto, a menos que la memoria esté dañada y simplemente se transfiera al disco. De cualquier manera, debería ver otras indicaciones de problemas de E / S en sus registros de eventos. Algun lado.
Michael K Campbell
Puede intentar ejecutar un checkdisk (chkdsk) en el disco para ver si Windows ve algún problema con el disco. Lo más probable es que deba reemplazar el disco. Sin embargo, podría haber sido un error dentro del código del controlador de disco o el código dentro del BIOS del disco. En cualquier caso, buscaría reemplazar los discos y / o el controlador.
mrdenny
8

Pude resolver esto desconectando la base de datos en Management Studio e inmediatamente volviéndola a conectar. dbcc checkdbhabía arrojado errores que se resolvieron después de hacer esto. No puedo decir por qué esto funcionó sólo que se hizo el trabajo.

Factor místico
fuente
5

También he tenido este problema recientemente y después de una gran cantidad de investigaciones, parece ser común cuando una base de datos está configurada en AUTO CLOSE. Configuré todas las bases de datos en AUTO CLOSE = FALSE. Esto comenzó con una base de datos, luego pasó a dos y la siguiente estaba en todas ellas. Simplemente reinicié el Servicio de instancias de SQL Server en lugar de restaurar las bases de datos. Otra forma de solucionar el síntoma es desconectar la base de datos problemática y volverla a conectar.

Clarice Bouwer
fuente
1

MS SQL desconectará los registros de una base de datos afectada para evitar daños en la base de datos. Es por eso que obtienes el error 9001.

Cuando desconecte la base de datos afectada / en línea, MS SQL habilitará los registros de la base de datos afectada hasta que vuelva a ocurrir el error.

Otra forma de resolver esto es cambiar la opción Auto_Close a OFF

http://sqlmag.com/blog/worst-practice-allowing-autoclose-sql-server-databases

Saúl A. Greco V.
fuente
0

Voy a adivinar / esperar que tengas una redada para el disco de tu servidor sql. Si sospecha que hay problemas de hardware, lo primero que haría sería ejecutar sus herramientas de diagnóstico / mantenimiento de incursiones.

La segunda cosa (probablemente simultáneamente si puede) es ejecutar dbcc checkdb en la base de datos (quizás también las bases de datos de su sistema).

Thirster42
fuente
0

Ok, primer paso, haga una copia de seguridad de su registro y sus archivos mdf en una unidad completamente diferente. ¡CON RAPIDEZ! (Copia de archivo)

Además, intente realizar una copia de seguridad completa de la base de datos.

A continuación, intente lo siguiente. Utilizando su base de datos actual, sepárela, si puede y luego elimine el archivo de registro, o muévalo a una ubicación completamente diferente en el disco. Luego, vuelva a adjuntar la base de datos y se mostrará en la interfaz gráfica de usuario con un archivo de registro, haga clic en eliminar (o eliminar) para que el archivo de registro no aparezca y luego haga clic en Aceptar. Básicamente adjuntarlo sin un registro, lo obligará a crear un archivo de registro para la base de datos en la ubicación predeterminada.

Házmelo saber.

Ryk
fuente
0

Sí, yo también recibí este mismo problema, se trataba del error tempDb 9001, es decir, el registro no está disponible. Reiniciamos los servicios y todo estuvo bien.

El problema detrás de esto fue SAN o problema de almacenamiento, mientras que la operación de escritura de E / S, no pudo escribir durante más de 15 segundos.

Conejito
fuente
0

Ayer recibí el mismo error "el registro para la base de datos '%' no está disponible. Error fatal 9001, mensaje 21. Póngase en contacto con su administrador" -

Solución alternativa: verifiqué el 'TempDB' pero no era accesible de manera similar al resto de las bases de datos del sistema. Luego, antes de ir a la opción de reparación, simplemente reinicié los servicios SQL para esa instancia y el problema se resolvió :) :)

Poonam Choudhary
fuente
-2

He visto que esto sucede cuando no hay espacio en disco disponible para la expansión del registro; ¿puede verificar que haya suficiente espacio en C: \ y que sus registros se estén administrando?

Quitaría sus ldf (y mdf) del volumen de arranque si tiene la opción.

SqlACID
fuente
Quedarse sin espacio en el disco duro NUNCA causará daños en la base de datos, a menos que esté utilizando almacenamiento de aprovisionamiento delgado y el almacenamiento base se quede sin espacio. Pero esa es una pesadilla completamente diferente.
mrdenny
Reformularé ... tal vez no se corrompa la base de datos, pero ciertamente es una causa de que los archivos de registro no estén disponibles como se indicó en el op.
SqlACID
1
Hay más de 25 GB de espacio libre en la unidad, y la base de datos en cuestión tiene menos de 25 MB de tamaño.
Scott Mitchell
El único error que verá al quedarse sin espacio es un error de archivo completo al intentar modificar filas dentro de la base de datos, ya que la transacción no se puede escribir en el registro (no es lo que indicó el OP). Quedarse sin espacio no provocaría que la base de datos dejara de estar disponible (según lo establecido por el OP).
mrdenny
Discrepar. Se quedó sin espacio en la unidad donde estaba el archivo de registro y luego comencé a ver exactamente el mismo problema en cuestión.
ADNow