SQL Server muestra la base de datos en recuperación

23

Hoy, después de una falla de energía, una base de datos (con Recuperación: completa) muestra "En recuperación" en SSMS. Asi que:

myDatabase (en recuperación) (estado de la base de datos: recuperación, apagado)

Después de finalizar, el "proceso de recuperación" de la base de datos muestra el nombre myDatabase sin "(En recuperación)". Pensé que el problema estaba resuelto, pero no lo estaba.

Cuando comencé la aplicación que usa esa base de datos, el texto adicional "(En recuperación)" aparece nuevamente al lado del nombre de mi base de datos.

Esperé hasta que terminó el "proceso de recuperación" y luego desconecté la base de datos y la volví a conectar.

Reinicié el servidor, reinicié la computadora y cuando mi aplicación se estaba ejecutando, el texto adicional aparece nuevamente. En los registros de SQL Server, el mensaje "Iniciando la base de datos 'myDatabase'" aparece varias veces. Parece que la base de datos funciona porque puedo insertar datos, pero el estado muestra que algo sucede.

El registro del servidor no muestra nada interesante. Lo único anormal es que tengo 30 entradas de "Iniciando la base de datos 'myDatabase'".

Sé que cuando el servidor se inicia, cada base de datos pasa por la recuperación antes de que esté lista para su uso. Pero en mi caso, la base de datos se pone en línea y luego muestra "myDatabase (En recuperación)". Si cierro la aplicación, la base de datos pasa a Estado: Normal. Esto me está volviendo loca.

Incluso instalé una nueva instancia de SQL Server y puse la base de datos anterior "myDatabase". El problema aún sucede.

Cuando ejecuto esta consulta:

SELECT databasepropertyex('nyDatabase', 'STATUS')

Muestra recuperación, en línea, sospechoso y el regreso a línea y luego la recuperación, etc.

Andres
fuente

Respuestas:

2

La respuesta wiki de la comunidad originalmente se dejó como una edición a la pregunta de su autor:

El problema era que la propiedad de la base de datos AutoCloseestaba activada.

La solución fue establecer AutoCloseen falso.

usuario126897
fuente
16

No estoy seguro de si esto ayudaría a resolver el problema, pero puede intentarlo.

Correr:

RESTORE DATABASE YourDatabase WITH RECOVERY

Vea si lo anterior saca la base de datos del modo de recuperación. Si no es así, el problema puede ser otra cosa.

¿Puedes probar el siguiente comando y ver si la base de datos está dañada?

DBCC CHECKDB ('YourDBname') WITH NO_INFOMSGS, ALL_ERRORMSGS

Si detecta daños, es posible que desee reparar la base de datos utilizando DBCC CHECKDB

RK Kuppala
fuente
6

Cada vez que conecta una base de datos en línea, pasa por un proceso de recuperación. Sin embargo, estoy un poco confundido por tu formulación del problema. ¿Está viendo que la base de datos se recupera en cualquier momento que no sea cuando la base de datos se desconecta (ya sea por su falla de alimentación original o por haberla desconectado y volver a conectar)? Si es así, la base de datos se desconecta por algún otro motivo. Lo mejor es verificar los registros del servidor SQL para ver qué está pasando.

También debe verificar el registro de eventos de Windows para ver si hay algo como una falla de disco. La base de datos no debe iniciarse y recuperarse durante las operaciones normales.

Ben Thul
fuente