lunes, 26 de abril de 2010

Recuperar database SQL SERVER 2000 usando archivo de datos MDF sin archivo de LOG o LDF.

Una mala jugada de los respaldos de las bases de datos en mi trabajo ocasionó que se perdieran 2 archivos de log (LDF) de las bases de datos de SQL SERVER 2000. Teniendo solamente los MDF en la mano es imposible rescatar la BD. Por ello tuve que empezar a investigar como se podía rescatar la estrucutura y datos. En varias búsquedas realizadas, logré armar un procedimiento para tal efecto: Rescatar una base de datos solamente con el MDF, prescindiendo del LDF o Log File.

A continuación los pasos para ello:

Lo primero es regenerar el archivo de log. Como hacerlo? Fácil. En el motor o servidor que quieres albergar la BD, crea una base de datos con el mismo nombre que la que quieres rescatar.

Luego, baja el motor y borra el MDF creado y reemplázalo por el respaldado. Lógicamente tiene que tener el mismo nombre de archivo.

Luego sube el motor.

Si todo lo anterior está ok, debe aparecer tu nueva base de datos en modo "sospechoso" o "suspect".

Utilizando algún Query Analizer, conéctate a la base de datos MASTER del motor y ejecuta la siguiente sentencia, para poder cambiar algunos datos de sistema directamente:


SP_CONFIGURE 'Allow updates',1

;

RECONFIGURE WITH OVERRIDE

;

UPDATE sysdatabases SET status = 32768 WHERE name='Mi_base_de_datos_suspect'


Me detengo particularmente en la última sentencia, para hacer hincapié en que deben poner el nombre de su base de datos en el "name" del WHERE.


Habiendo terminado lo anterior, abran el administrador corporativo o enterprise Manager del SQL SERVER.

En la sección de las bases de datos, esa base debería aparecer en modo de emergencia y en color plomo.

Bien, con ello, ejecuten el importador/exportador de datos del motor, seleccionen la base de datos que quieren rescatar (la que está en modo emergencia), la base de datos de destino y luego elijan la o las tablas que quieren recuperar...y listo!!!!

Con ello comenzarán a rescatar los datos de ella y luego la pueden transportar, modificar o lo que quieran.

Este proceso que recopilé de varios lugares, funciona perfecto y puedes respirar tranquilo...

21 comentarios:

  1. Solo pude dar hasta el paso de la 2da sentencia, pero cuando habro el administrador no puedo verificar mi base de datos en el estado de emergencia.

    Que me falta hacer?

    Slds,

    ResponderEliminar
  2. Jesús, puedes hacer un select sobre sysdatabases, modo admin, y enviarlo a mi correo? Veamos por ese lado el tema para no alargar tanto los comentarios. luego publicamos solo la solución.
    Saludos!

    ResponderEliminar
  3. Saludos,

    Al tratar de importar una nueva tabla de otra B.D he sustituido todas mis tablas.. UFFF entonces ¿Cómo puedo hacer para restaurarla a una versión anterior esa B.D? No tenía un plan de mantenimiento ni un backup previo, así que supongo debe ser a partir del archivo Log.LDF.

    Agradeciendo de antemano su ayuda;

    Noel Flores.

    ResponderEliminar
  4. hola eduardo, te quería felicitar por la solución que diste por la recuperación de la base de datos, me hago un mea culpa por no haber realizado el back up correspondiente pero buno te agradezco mucho tus conocimientos ..saludos..Gerardo

    ResponderEliminar
  5. Muchas gracias Eduardo, por compartir tu experiencia.
    No sabes el tiempo que he perdido hasta encontrar tu solución.
    Saludos.
    Pau.

    ResponderEliminar
  6. Muy bueno tu post , me sirvió de mucho , muchas gracias Eduardo
    Atte.: Fernando (Queco)

    ResponderEliminar
  7. grasias eduardo
    de donde eres muy bueno tu post claro y consiso
    recupere mis datos
    saludes

    ResponderEliminar
  8. Funciona excelente. Muchas gracias, eres muy bueno en esto. Busque y probe muchas soluciones en la red y ninguna funciono.

    ResponderEliminar
  9. Necesito su ayuda urgente, realice todo lo q comento, sin embargo al intentar importar la información y al elegir la base de datos en emergencia:
    Origen del error: Microsoft OLE DB Provider for SQL Server
    Descripción del error: Error en la conexión

    Y cuando intento darle en propiedades a mi BD (en emergencia) me muestra lo siguiente:
    Microsoft SQL-DMO (ODBC SQLState: HY000)
    Error 823:

    Por favor ayudame... q es una base de datos transaccional

    ResponderEliminar
  10. NO PUEDO PASAR A MODO DE EMERGENCIA, AYUDA POR FAVOR!!!!!!!!!!!!

    ME MANDA EL SIG ERROR.

    MSG 259, LEVEL 16, STATE 2, LINE 1
    AD HOC UPDATES TO SYSTEM CATALOGS ARE NOT ENABLE

    ResponderEliminar
  11. Estimado
    Aun cuando tengas una urgencia te agradecería no GRITASES al momento de preguntar. Las urgencias tuyas no son las del resto e incluso haces que se vayan las ganas de ayudar. La desesperación es propia de los inseguros y no de un profesional informático. Respecto al error, favor ejecuta estos comandos en la base de datos master:

    sp_configure 'Allow updates',1
    go
    reconfigure with override
    go

    Prueba con eso y cuentas.

    ResponderEliminar
  12. Disculpa por escribir en mayúsculas, mi intención no era que pensaras que grito.

    Al ejecutar las sentencias me manda un mensaje que dice que no existe esa opción

    ResponderEliminar
  13. cual opción no existe? Manda un pantallazo o el error en más detalle para saber cual es la falla.

    ResponderEliminar
  14. al ejecutar las sentencias

    use master
    go
    exec sp_configure 'Allow updates',1
    go
    reconfigure with override
    go

    update sysdatabases
    set status = 32768
    where name = 'my_base'
    GO

    exec sp_configure 'ALLOW',0
    go
    reconfigure with override
    go

    manda los siguientes mensajes:
    Server: Msg 15123, Level 16, State 1, Procedure sp_configure, Line 78
    The configuration option 'Allow updates' does not exist, or it may be an advanced option.

    Valid configuration options are:

    Server: Msg 259, Level 16, State 2, Line 1
    Ad hoc updates to system catalogs are not enabled. The system administrator must reconfigure SQL Server to allow this.
    Server: Msg 15123, Level 16, State 1, Procedure sp_configure, Line 78
    The configuration option 'ALLOW' does not exist, or it may be an advanced option.

    ResponderEliminar
  15. en el mandato donde reconfiguras a 0 el allow updates estas poniendo solo ALLOW. debes poner igual "allow updates".
    Eso es para restablecer la condición de seguridad que se cambió inicialmente.
    Con eso deberías estar ok.
    Saludos!

    ResponderEliminar
  16. Es que ni poniendo el 'allow updates' en las sentencias me toma esa opción, si revisas a detalle los mensajes de errores que te envie, desde la primera sentencia dice que no existe la opcion 'allow updates'

    Tendrás alguna otra solución que se pueda probar.

    ResponderEliminar
  17. hola
    Soy nueva con SQL Server, tengo los dos archivos pero en el equipo que tengo esta instalado MySQL Server 5.1 y ya intente con este codigo y nada
    USE master
    GO
    CREATE DATABASE RESPALDO
    ON
    ( NAME = RESPALDO_dat,
    FILENAME = 'C:\tmp\RESPALDO.mdf',
    SIZE = 100,
    MAXSIZE = 500,
    FILEGROWTH = 5 )
    LOG ON
    ( NAME = RESPALDO_log,
    FILENAME = 'C:\tmp\RESPALDO.ldf',
    SIZE = 50MB,
    MAXSIZE = 1500MB,
    FILEGROWTH = 5MB )
    GO


    Ayuda porfissssssssss

    Es muy urgente si no puedo me corren :(

    ResponderEliminar
  18. al correr el scrip
    use master
    go
    exec sp_configure 'Allow updates',1
    go
    reconfigure with override
    go

    update sysdatabases
    set status = 32768
    where name = 'mdb'
    GO
    me aparecen los siguientes errores
    Server: Msg 15123, Level 16, State 1, Procedure sp_configure, Line 79
    The configuration option 'Allow updates' does not exist, or it may be an advanced option.

    Valid configuration options are:

    Server: Msg 259, Level 16, State 2, Line 1
    Ad hoc updates to system catalogs are not enabled. The system administrator must reconfigure SQL Server to allow this.

    que debo hacer
    gracias

    ResponderEliminar
    Respuestas
    1. Lo primero es saber qué versión de SQL Server es la que estás intentando corregir.

      Eliminar
  19. Hola Eduardo, muchas gracias por la información que aportas aquí, muy conciso y claro. Ya tengo mi bd de sql 2000 en modo de emergencia, pero cuando voy a tareas, las opciones de importar o exportar datos están deshabilitadas, al igual que todas las que aparecen en ese menú contextual. Me pregunto si sabrías porqué?, Tengo otras bd en el mismo sql y las opciones de importar/exportar si están disponibles. Muchas gracias por tu tiempo y conocimientos

    ResponderEliminar
  20. Que tal Eduardo, Soy Victor..
    Muy bueno tu post. Pude llegar a poner mi base de datos en modo emergencia.
    Solo que al tratar de exportar los datos, solo exporta dos tablas. Cuál sería el problema en ese caso.
    Estoy atento a tus comentarios

    ResponderEliminar