Recuperar base de datos (SOSPECHOSO) en SQL Server

Siendo el Administrador de Base de Datos se tiene en mente que es casi imposible que una base de datos se corrompa usando un Gestor de Base de Datos «tan bueno» como el SQL Server de Microsoft, pero ésto suele suceder…

Normalmente ocurre por problemas físicos (como por ejemplo: corte en el suministro de energía, problemas con los discos duros, etc.), lo más recomendable y sano es restablecerlo desde una copia de seguridad de la base de datos, pero si en caso no la tenemos o todavía es posible recuperarlo -o repararlo- sólo hacen falta ejecutar unas consultas, veamos paso a paso:

1. Desde el Microsoft SQL Server Management Studio, ejecutamos la siguiente consulta:

USE master 
GO 
sp_configure 'allow updates', 1 
GO 
RECONFIGURE WITH OVERRIDE 
GO

Esto nos permitirá trabajar (modificar, alterar, reparar, …) las base de datos.

Continuamos con siguiente consulta:

Alter Database TU_BASE Set Single_user;

Esto nos permitirá que sólo exista un único usuario trabajando en la base de datos, osea nosotros, para que otros no se conecten y exista problemas después –más vale prevenir, que luego lamentar.

2. Ahora ejecutamos la siguiente consulta  para poder comprobar su estado y repararlo.

Alter Database TU_BASE Set Emergency

 

Una vez terminado la consulta, se puede comprobar que se haya ejecutado correctamente, mirando en la imagen de anterior con la siguiente; en la base de datos paso de un Icono de «Advertencia» a un estado de color «Anaranjado», si todo salió bien continuamos…

3. Una vez en el estado de Emergencia, ejecutamos las siguientes consultas una por una:

DBCC checkdb (NAME_DATABASE, REPAIR_REBUILD);
DBCC checkdb (NAME_DATABASE, REPAIR_ALLOW, DATA_LOSS);

Este proceso puede demorar un poco de tiempo, dependerá de cuanto este dañado y de que tamaño (Mb, Gb, …) sea la base de datos, una vez terminado podemos continuar.

Una buena práctica será: Guardar en un TXT del estado del LOG de las consultas, para después analizar a detalle si existió pérdida de información y si es posible comprobar la consistencia de las mismas.

4. Hasta aquí ya se han reparado las base de datos, ahora falta regresar la base de datos al estado original, para que todos puedan usarlo, haciendo la siguiente consulta:

Alter Database TU_BASE Set MULTIUSER

USE master 

GO 

SP_Configure 'allow updates', 0 

GO 

RECONFIGURE WITH OVERRIDE 

GO

 

Listo, con estas siete consultas en estos 4 pasos, tendremos restablecidos nuestra base de datos, lista para operar nuevamente.

Adicional: Es necesario se examine rigurosamente el LOG de las consultas para evitar sorpresas en el futuro, en caso te ha servido este articulo déjame un comentario como agradecimiento y/o alguna otra consulta que quieras hacerme.

 

5 Respuestas a “Recuperar base de datos (SOSPECHOSO) en SQL Server”
  1. Oscar 24 Oct 2019
    1 Reply

    Si nos bloqueamos en algún punto probar a usar esto:
    USE master
    GO
    EXEC SP_CONFIGURE ‘Allow updates’,1
    GO
    RECONFIGURE WITH OVERRIDE
    GO
    EXEC sp_resetstatus ‘BBDD_Suspect’
    GO

    — “Reiniciar la instancia de SQL Server”

    USE master
    GO
    EXEC SP_CONFIGURE ‘Allow updates’,0
    GO
    RECONFIGURE WITH OVERRIDE
    GO

  2. CARLOS VALDEZ 29 Mar 2019
    Reply

    Tengo una base de datos suspect pero solo me deja ponerla modo emergencia y de alli ya pasa no deja correr ningun otro query que puedo hacer o que procede de antemano gracias si me pueden ayudar

  3. Rangel Jesus Pech Trujeque 7 Oct 2018
    Reply

    Excelente tutorial, pero si la base de datos sigue con problemas como solucionarlo?, es decir, en su momento se hizo todos los pasos como indicas en el tutorial pero a la larga el log de la base de datos se daño exageradamente como recuperarlo?

Dejar una Respuesta