Como reparar una Base de Datos en SUSPECT
La base de datos cuando se encuentra en estado SUSPECT en SQL Server es por que el motor auto-protege la base debido a un problema comunmente con el hardware, ocurre muchas ocaciones normalmente cuando un servidor se apaga de golpe y se dañan sectores del disco duro
Para recuperar la base de datos realizamos el siguiente procedimiento:
Paso 1.
Reseteamos el estado de la base de datos Sospechosa con el siguiente comando:
USE master
GO
EXEC SP_CONFIGURE 'Allow updates',1
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_resetstatus 'BasededatosenSUSPECT'
GO
Solo modificamos el 'BasededatosenSUSPECT' por el nombre de la base dañada.
Paso 2.
Ponemos en estado de emergencia la base de datos para tratar de recuperar la informacion dañada
USE master
GO
ALTER DATABASE BasededatosenSUSPECT SET EMERGENCY
GO
Paso 3.
Revisamos la integridad de la base de datos con el siguiente comando:
use BasededatosenSUSPECT
dbcc checkdb
Paso 4.
Revisamos que no tengan transacciones abiertas, ejecutando el siguiente comando:
use BasededatosenSUSPECT
dbcc opentran
Paso 5.
Si el resultado de la consulta es que no tiene transacciones activas o ejecutandose podemos continuar
Lo siguiente es reconstruir el Log de la base de datos dañada con los siguientes comandos:
Use master
GO
ALTER DATABASE BasededatosenSUSPECT SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE BasededatosenSUSPECT REBUILD LOG ON(NAME=nombredellogdelabd, FILENAME='C:\SQL\Logdebddañada.ldf')
Use master
GO
ALTER DATABASE BasededatosenSUSPECT SET MULTI_USER WITH ROLLBACK IMMEDIATE;
GO
Paso 6.
Ya recontruido el log de la base de datos reiniciamos los servicios del SQL.
y volvemos a ejecutar el siguiente comando:
use BasededatosenSUSPECT
dbcc checkdb
Si no marco error en la ejecucion del comando la base de datos quedo en su estado normal sin problema.
NOTA: en caso de que marque error de que se encuentra dañado un objeto de la base de datos
ejecutamos la siguiente sentencia:
ALTER DATABASE BasededatosenSUSPECT SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
BEGIN TRANSACTION;
DBCC CHECKDB ('BasededatosenSUSPECT ', REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE BasededatosenSUSPECT SET MULTI_USER;
Esta sentencia la utilizamos para reparar los objectos dañados.
Para recuperar la base de datos realizamos el siguiente procedimiento:
Paso 1.
Reseteamos el estado de la base de datos Sospechosa con el siguiente comando:
USE master
GO
EXEC SP_CONFIGURE 'Allow updates',1
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_resetstatus 'BasededatosenSUSPECT'
GO
Solo modificamos el 'BasededatosenSUSPECT' por el nombre de la base dañada.
Paso 2.
Ponemos en estado de emergencia la base de datos para tratar de recuperar la informacion dañada
USE master
GO
ALTER DATABASE BasededatosenSUSPECT SET EMERGENCY
GO
Paso 3.
Revisamos la integridad de la base de datos con el siguiente comando:
use BasededatosenSUSPECT
dbcc checkdb
Paso 4.
Revisamos que no tengan transacciones abiertas, ejecutando el siguiente comando:
use BasededatosenSUSPECT
dbcc opentran
Paso 5.
Si el resultado de la consulta es que no tiene transacciones activas o ejecutandose podemos continuar
Lo siguiente es reconstruir el Log de la base de datos dañada con los siguientes comandos:
Use master
GO
ALTER DATABASE BasededatosenSUSPECT SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE BasededatosenSUSPECT REBUILD LOG ON(NAME=nombredellogdelabd, FILENAME='C:\SQL\Logdebddañada.ldf')
Use master
GO
ALTER DATABASE BasededatosenSUSPECT SET MULTI_USER WITH ROLLBACK IMMEDIATE;
GO
Paso 6.
Ya recontruido el log de la base de datos reiniciamos los servicios del SQL.
y volvemos a ejecutar el siguiente comando:
use BasededatosenSUSPECT
dbcc checkdb
Si no marco error en la ejecucion del comando la base de datos quedo en su estado normal sin problema.
NOTA: en caso de que marque error de que se encuentra dañado un objeto de la base de datos
ejecutamos la siguiente sentencia:
ALTER DATABASE BasededatosenSUSPECT SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
BEGIN TRANSACTION;
DBCC CHECKDB ('BasededatosenSUSPECT ', REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE BasededatosenSUSPECT SET MULTI_USER;
Esta sentencia la utilizamos para reparar los objectos dañados.

Comentarios
Publicar un comentario