jueves, 28 de enero de 2016

Base de datos Sospechosa (Suspect) en SQL Server

 Base de datos Sospechosa (Suspect) en SQL Server 2005


PROBLEMA: Cuando nos aparece nuestra BD con este estado y el símbolo de advertencia significa que la misma se ha corrompido en especial el Log. Esto ocurre por errores en el manejo de la misma (daño en disco duro o un apagón eléctrico o el ataque de un virus).
La base de datos se encuentra en status inaccesible y no es posible crear un respaldo de la misma.

SOLUCION: La solución varia según la version de SQL. lo primero es abrir una nueva consulta (query)
Para 2005 en adelante:
1.- Una vez en el query lo que tendremos que hacer, es poner la base de datos en Modo de Emergencia (Emergency Mode), que se puede hacer con el comando ALTER DATABASE SET EMERGENCY (ej: ALTER DATABASE Nombre BD SET EMERGENCY).
La BD tomara el siguiente aspecto:
Nota1: En caso de no funcionar este comando, saltarlo y continuar con los demás



2.- Lo siguiente sera pasar nuestra BD a un usuario (single user) para ello ejecutar el comando ALTER DATABASE Nombre BD SET SINGLE_USER, (en caso de que este no progrese se usara ALTER DATABASE Nombre BD SET SINGLE_USER WITH ROLLBACK IMMEDIATE)
Nota2: En caso de no funcionar este comando, saltarlo y continuar con los demás.
3.- El siguiente paso es ejecutar el comando DBCC CHECKDB con la opción REPAIR_ALLOW_DATA_LOSS ej. DBCC CHECKDB ('Nombre BD', REPAIR_ALLOW_DATA_LOSS);
una vez realizado saldrá un mensaje indicando la base de datos se ha recuperado con éxito, detectándose X numero de errores que han sido corregidos con éxito, quedando en modo de acceso exclusivo para DBO. Con esto, podemos revisar su estado y/o contenido, el ERRORLOG, etc.
4.- En este punto nuestra BD quedará como SINGLE USER y habrá desaparecido Emergency o Suspect de la misma, en este punto aun no es utilizable pero ya habremos solucionado la parte mas complicada de nuestra BD.
5.- el siguiente paso sera utilizar el comando ALTER DATABASE para volver nuestra BD a su status original, es decir Multi_User, ej. ALTER DATABASE Nombre BD SET MULTI_USER.

una vez hecho el paso anterior nuestra BD estará reparada y lista para usarse, se recomienda realizar un respaldo inmediato de la información por si se presentara algún problema.

Nota3: para el caso de SQL anterior a 2005 el comando es: DBCC REBUILD_LOG

No hay comentarios:

Publicar un comentario