4 jun 2013

Reparar base de datos SQL Server 2005 o posterior

En algunas ocasiones las base de datos se dañan con fallas de hardware, apagones inesperados del servidor y transacciones interrumpidas incorrectamente. SQL Server provee de sentencias que permiten verificar y reparar una base de datos con inconsistencias o dañada.

Antes de realizar el siguiente procedimiento deberia realizar un respaldo de la base de datos dañada si lo permite SQL Server o hacer una copia física de los archivos.


Paso 1: se coloca la base de datos en modo emergencia y usuario único
Alter Database mibd SET SINGLE_USER
Alter Database mibd SET EMERGENCY


Paso 2: Reparar la base datos
DBCC CHECKDB('mibd', REPAIR_ALLOW_DATA_LOSS)

. Repita este paso hasta que el mensaje sea '0 errores encontrados' para la base de datos
. La sentecia CHECKDB con la opcion REPAIR_ALLOW_DATA_LOSS elimina datos de ser necesario para realizar la reparación o corregir la consistencia de los datos, para una reparación más rápida y sin pérdida de datos pruebe la opcion REPAIR_REBUILD, aunque en ocasiones con esta opción no se repara completamente la base de datos.


Paso 3: Regresar a multiusuario y colocar en linea la base de datos
Alter Database mibd SET ONLINE
Alter Database mibd SET MULTI_USER


Aunque esto permite recuperar la base de datos en la mayoría de los casos, es altamente recomendable tener una estrategia correcta de respaldo o recuperación de la base de datos tales como espejos de discos, servidor reflejado, recuperación completa, etc.

29 comentarios:

  1. Que tal muy interesante tu tema, ha pasado alrrededor de 12 con el proceso de recuperacion y hasta ahorita no se ha recuperado nada...

    ResponderBorrar
  2. A que te refieres con que a pasado alrededor de 12?

    ResponderBorrar
  3. hola, me podras ayudar, tengo SQL server 2005 y en la base de datos me sale el signo de admiracion y no tengo respaldo, que hago ? se podra reparar como dices en los pasos? saludos!

    ResponderBorrar
  4. que tal Alberto, posiblemente solo sea un indicador de advertencia por estatus, te sugiero desconectes la base de datos y vuelvas a conectarla; es posible que eso solucione tu problema.

    Si con el procedimiento anterior no se quita el signo, procede a reparar con el procedimiento del articulo

    ResponderBorrar
  5. Amigo, muchas gracias por tener en cuenta los detalles porque los otros bloggs aunque son muy buenos como este, no hacen el comentario de como devolver la bd de emergency a online, y aunque es basico a algunos que no nos ha sucedido seguido esto, nos ayuda grandemente.

    saludos.

    atte., JARCH

    ResponderBorrar
  6. Como puedo reparar una base de datos que se daño el disco duro y solo pude recuperar el archivo MDF, no la puedo cargar porque falta el archivo LOG.

    ResponderBorrar
  7. Para restaurar el MDF sin el log, mira esta documentacion:

    https://msdn.microsoft.com/es-MX/library/ms174385.aspx

    ResponderBorrar
  8. como se que la base de datos esta corrupta y no se borro? un dia prendi la maquina y la base de datos ya no se conectaba y desde el manager no deja hacer nada, y el archivo de la base de datos pesa 0kb pero hay un log es posible recuperar algo con ese log?

    ResponderBorrar
  9. oh caray, pues si mide 0k es obvio que se borro o sobreescribieron la base de datos. Si el log tiene un tamaño considerable es posible que la base de datos haya tenido recuperacion completa, mira este tema:

    https://msdn.microsoft.com/es-mx/library/ms179451.aspx

    ResponderBorrar
  10. saludos, gracias por el aporte: breve, conciso, preciso y completo.

    ResponderBorrar
  11. cComo puedo resolver lo mismo pero con SQL 2014 si me marca error:- version 661. Upgrade the database to the latest version.-

    ResponderBorrar
  12. cComo puedo resolver lo mismo pero con SQL 2014 si me marca error:- version 661. Upgrade the database to the latest version.-

    ResponderBorrar
  13. Lo siento, aun no tengo instalado SQL 2014

    ResponderBorrar
  14. Buena tarde, tengo un problema, espero que me pueda ayudar
    el MSSQLSERVER no se inicia, al revisar en el ERRORLOG
    me aparece el siguiente error,
    NO SE PUEDE ABRIR LA BASE DE DATOS "MODEL" TIENE LA MARCA SUSPECT, para recuperacion consulte el registro de errores de SQL server

    no se ni por donde empezar para reparar el problema, no tengo copia de seguridad de la base de datos

    antemano le agradezco, sus comentarios

    ResponderBorrar
  15. Reinstala SQL Server y adjunta tus bases de datos previamente guardadas despues de desinstalar

    ResponderBorrar
  16. hola una consulta tengo un backup de mi base datos pero esta corrupta.... se podra recuperar o reparar

    ResponderBorrar
  17. me podrias ayudar tengo un backup de una bese datos pero este esta corrupta hay alguna forma de recuperarlo

    ResponderBorrar
  18. con este ´procedimiento que indicas si podre resolver FCRPDM(Pendiente de recuperacion), de antemano agradsco tu apoyo, se tienen instlados sql server 2012


    saludos

    ResponderBorrar
  19. Estimado anónimo, ignoro si resuelva tu problema, cuando alguna base de datos esta en modo 'recuperacion' en mi experiencia lo he resuelto simplemente desconectando y volviendo a conectar la base de datos

    ResponderBorrar
  20. Excelente.. me ayudo mucho tu post.. pude recuperar toda la base sin perdida de info... mil millones de gracias desde Chile.

    ResponderBorrar
  21. Me da gusto Mauricio, espera mi próxima publicación sobre seguridad de SQL para evitar alteración de datos

    ResponderBorrar
  22. Hola Antonio, me gustaría sabes si me puedes ayudar con este problema que tengo:

    SQL Server detectó un error de E/S de coherencia lógico: página rasgada (firma esperada: 0x55555555; firma existente: 0x00005555). Ocurrió durante leer de la página (1:3543285) en la base de datos con id. 13, desplazamiento 0x000006c21ea000, archivo 'MIBASEDEDATOS'. El registro de errores de SQL Server o el registro de eventos del sistema puede contener mensajes adicionales con más detalles. Se trata de una condición de error grave que amenaza la integridad de la base de datos y que se debe corregir de inmediato. Ejecute una comprobación de coherencia completa de la base de datos (DBCC CHECKDB). Este error se puede haber originado por muchos factores; para obtener más información, vea los Libros en pantalla de SQL Server.

    Con este metodo que indicas en tu blog sea posible reparar esto ??
    De antemano muchas gracias.

    ResponderBorrar
  23. Supongo que si podrias reparar tu base de datos, lo has intentado?

    ResponderBorrar
  24. Que tal Antonio, buen día, tengo este error, que me recomiendas?

    SQL Server detectó un error de E/S de coherencia lógico: página rasgada (firma esperada: 0x55555555; firma existente: 0x00005555). Ocurrió durante leer de la página (1:3543285) en la base de datos con id. 13, desplazamiento 0x000006c21ea000, archivo 'DataBase.mdf'. El registro de errores de SQL Server o el registro de eventos del sistema puede contener mensajes adicionales con más detalles. Se trata de una condición de error grave que amenaza la integridad de la base de datos y que se debe corregir de inmediato. Ejecute una comprobación de coherencia completa de la base de datos (DBCC CHECKDB). Este error se puede haber originado por muchos factores; para obtener más información, vea los Libros en pantalla de SQL Server.

    Muchas gracias

    ResponderBorrar
  25. Buen dia Jesús, te recomiendo ejecutar el procedimiento escrito en el articulo, si después de eso no resuelves tu error procede a restaurar el respaldo o a comprar una herramienta avanzada para recuperación de bases de datos SQL Server.


    saludos

    ResponderBorrar
  26. Que tal Antonio, para comentarte que realizando este proceso si funciona la reparacion de la DB, muchas gracias por tu aporte.
    Saludos...

    ResponderBorrar
  27. Buen día, veo que eres experto en reparar bases de datos de SQL Server, tengo un mega detalle con una BD de SQL SERVER 2016, al tratar de hacer respaldo me aparece un error, según es el espacio o propiedades de la carpeta, ya hice de todo DBCC habilitar permisos y nada.

    ResponderBorrar
  28. Gracias por comentar, realmente no soy 'tan experto', pero aunque lo fuera no tengo ida de cual puede ser tu problema al respaldar.

    ResponderBorrar

Todos tus comentarios y sugerencias son leidos, gracias por contribuir.