SQL Server: Reparar base de datos en Suspect o Sospechosa

Uno de los posibles estados de una base de datos es Suspect. Cuando SQL Server no puede asegurar la integridad de una base, ésta asume ese estado.

Los motivos por los cuales se produce esta situación son amplios, pero normalmente se debe a apagados repentinos del servidor por fallas de hardware, cortes de energía, etc. También, se suele dar por procesos de Recovery no terminados (falta de espacio en disco, etc.)

Cuando una base de datos se encuentra en ese estado, no puede ser utilizada. En el combobox de bases de datos del Query Analizer no figurará y si se ejecuta la instrucción USE fallará.

USE MyDB;

Para resolver esta situación, se deberá utilizar el stored procedure sp_resetstatus. Como este procedure modifica tablas del sistema, se tendrá que habilitar la actualización antes de la ejecución y después volver a deshabilitarla.

Habilitar modificación en la base de datos master:

USE master

GO

sp_configure ‘allow updates’, 1

GO

RECONFIGURE WITH OVERRIDE

GO

Resetear el estado de suspect:

EXEC sp_resetstatus ‘MyDB’;

Para ejecutar el check de integridad hará falta poner la base de datos en single user

ALTER DATABASE ‘MyDB’ SET SINGLE_USER;

En caso que no sea posible sacarla de suspect, es posible pasarla a modo emergency

Alter Database ‘MyDB’ Set Emergency

Si esto no funciona es posible que haya que reinicar la instancia entera de SQL Server

Pasamos integrity check, para reparar sin perdida de datos:

DBCC checkdb(‘MyDB’,REPAIR_REBUILD);

Para reparar con posible perdida de datos:

DBCC checkdb(‘MyDB’,REPAIR_ALLOW_DATA_LOSS);

Para volver a dejar la base de datos en modo multiusuario:

ALTER DATABASE ‘MyDB’ SET MULTI_USER

Deshabilitar la opción de allow_updates para volver a dejarlo como antes

USE master

GO

sp_configure ‘allow updates’, 0

GO

RECONFIGURE WITH OVERRIDE

GO

Ya tendríamos la base de datos lista y reparada para continuar trabajando.

Acerca de estos anuncios

11 Responses to SQL Server: Reparar base de datos en Suspect o Sospechosa

  1. Manuel dice:

    buen aporte amigo

  2. JOSELUIS dice:

    GRACIAS AMIGO MUCHAS GRACIAS ME SIRVIO BASTANTE

    SALUDOS

  3. Federico dice:

    Excelente, probe con varios scripts pero este funcionó a la perfección.

  4. Allan dice:

    Funcionó correctamente. Vale agregar que se tiene que reiniciar la BD y refrescar para que se pueda abrir el árbol de BD que se recuperó.

    Slds desde CR.

  5. Luis Acevedo dice:

    Muchísimas gracias. funcionó perfecto.

  6. Laconico dice:

    Muchas gracias me ayudo a reparar mi base de datos GRACIAS

  7. Miguel dice:

    Muchas gracias men, igual si les sirve yo solo active el modo de emergencia y de ahi genere los scripts de los datos para restaurar los datos.

  8. Angel dice:

    Fantastico, me has salvado. Todo en marcha otra vez.
    Un saludo.

  9. oscar huanca dice:

    Excelente, mejor soluciòn imposible… Gracias! me salvastes varias horas de trabajo, para no restablercer. Lo ùnico que me pregunto es si reparar con posible perdida de datos, genera alguna incosistencia.

    Gracias

    • Alex Morales Satorres dice:

      Yo nunca me he encontrado ningún problema. Como el nombre indica hay la posibilidad de perder datos, pero no de dejarlo inconsistente ya que precisamente lo hace es reparar esas inconsistencias. Un saludo.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 346 seguidores

A %d blogueros les gusta esto: