none
Ayuda recuperar base de datos RRS feed

  • Pregunta

  • Buenas chic@s, 

    Hoy se me dio un problema y me gustaría ver si me pueden ayudar a solucionarlo.

    Me ha fallado el disco duro, he tenido que sustituirlo y he tenido que reinstalar todo, hasta aquí todo bien, todo ha funcionado a la perfección, pero me encontré el siguiente problema a la hora de restaurar una base de datos de sql server 8, el archivo .mdf no se ha podido recuperar, pero si he podido recuperar el LDF. entonces la situación es que tengo un fichero y copia completa de la base de datos de hace 2 días y un fichero LDF reciente.

    Es posible recuperar la base de datos de hace 2 días y después con el .ldf actualizar los datos nuevos mas recientes? Se puede hacer directamente con sql server o necesito alguna otra herramienta? gracias

    jueves, 26 de septiembre de 2019 10:08

Respuestas

  • ¿Qué modelo de recuperación tenía configurado la base de datos? El hecho de que solo hables de la "copia completa" pero no de las "copias del Log" me lleva a pensar que estabas trabajando con el modelo de recuperación Simple. En este caso, el Log se trunca automáticamente en cada Checkpoint, por lo que el .ldf no contiene la secuencia de cambios desde el backup. En cuyo caso no es posible restaurar los cambios desde el .ldf.

    Si el modelo estaba en Full (lo cual implica que la estrategia de copias de seguridad contiene backups completos y backups del Log) entonces, bastaría con restaurar el último backup completo y a continuación todos los backups del log secuencialmente hasta llegar al último que tengas.

    • Propuesto como respuesta Pablo RubioModerator jueves, 26 de septiembre de 2019 15:02
    • Marcado como respuesta mayoko jueves, 26 de septiembre de 2019 22:12
    jueves, 26 de septiembre de 2019 12:32
  • NUNCA LO HE HECHO, pero se me ocurre lo siguiente:

    En un ambiente de PRUEBAS

    1.- RESTAURAR el backup que tiene de hace 2 dias, si todo va bien, entonces

    2.- Detener el servicio de SQL Server, eliminar el archivo LDF

    3.- Substituir este archivo por el que "si pudo recuperar"

    4.- Levantar el servicio de SQL Server, en teoria, deberia levantar sin problemas, si todo va bien

    5.- Hacer un respaldo TAIL-LOG del log de la base.

    6.- En su ambiente "Productivo", restaurar el ultimo full que tiene, dejandolo en WITH NORECOVERY

    7.- Aplicar el backup TAIL-LOG con WITH RECOVERY

    La "teoria" dice que deberia quedar ON-LINE y con todos los datos recuperados, eso dice la "teoria"


    IIslas Master Consultant SQL Server

    ACLARACION: Esto deberia funcionar si la base, como bien dice Pablo, hubiese estado en modo de recuperacion FULL antes del problema.
    jueves, 26 de septiembre de 2019 17:41

Todas las respuestas

  • ¿Qué modelo de recuperación tenía configurado la base de datos? El hecho de que solo hables de la "copia completa" pero no de las "copias del Log" me lleva a pensar que estabas trabajando con el modelo de recuperación Simple. En este caso, el Log se trunca automáticamente en cada Checkpoint, por lo que el .ldf no contiene la secuencia de cambios desde el backup. En cuyo caso no es posible restaurar los cambios desde el .ldf.

    Si el modelo estaba en Full (lo cual implica que la estrategia de copias de seguridad contiene backups completos y backups del Log) entonces, bastaría con restaurar el último backup completo y a continuación todos los backups del log secuencialmente hasta llegar al último que tengas.

    • Propuesto como respuesta Pablo RubioModerator jueves, 26 de septiembre de 2019 15:02
    • Marcado como respuesta mayoko jueves, 26 de septiembre de 2019 22:12
    jueves, 26 de septiembre de 2019 12:32
  • NUNCA LO HE HECHO, pero se me ocurre lo siguiente:

    En un ambiente de PRUEBAS

    1.- RESTAURAR el backup que tiene de hace 2 dias, si todo va bien, entonces

    2.- Detener el servicio de SQL Server, eliminar el archivo LDF

    3.- Substituir este archivo por el que "si pudo recuperar"

    4.- Levantar el servicio de SQL Server, en teoria, deberia levantar sin problemas, si todo va bien

    5.- Hacer un respaldo TAIL-LOG del log de la base.

    6.- En su ambiente "Productivo", restaurar el ultimo full que tiene, dejandolo en WITH NORECOVERY

    7.- Aplicar el backup TAIL-LOG con WITH RECOVERY

    La "teoria" dice que deberia quedar ON-LINE y con todos los datos recuperados, eso dice la "teoria"


    IIslas Master Consultant SQL Server

    ACLARACION: Esto deberia funcionar si la base, como bien dice Pablo, hubiese estado en modo de recuperacion FULL antes del problema.
    jueves, 26 de septiembre de 2019 17:41
  • Muchisimas gracias a ambos, lamentablemente la base de datos no está en FULL. menos mal que picando datos "toda la tarde" he podido dejarla como estaba.

    Pero ya aprendí la lección, a partir de ahora lo pondré en FULL por si en alguna ocasión me volviese a suceder tal cosa, también aprovecharé y haré copias diarias en vez de semanales.

    Como se suele decir, de los errores se aprende!

    Muchisimas gracias por vuestra atención e interés.

    jueves, 26 de septiembre de 2019 22:12
  • FULL.- Domingos de madrugada

    DIF.- Una diaria, antes de iniciar el proceso fuerte de operacion

    TRN.- Cada media hora

    Saludos


    IIslas Master Consultant SQL Server

    jueves, 26 de septiembre de 2019 22:23
  •  lo pondré en FULL por si en alguna ocasión me volviese a suceder tal cosa, también aprovecharé y haré copias diarias en vez de semanales

    No olvides hacer el backup del Log además del backup diario o semanal. Si pones la base de datos en modo Full y no haces copias del Log, entonces el Log crece sin parar y acabará consumiendo todo el espacio que tengas en disco.

    viernes, 27 de septiembre de 2019 6:34