none
Restaurar base de datos SQL Server 2005 con diferencial RRS feed

  • Pregunta

  • Buenas,

    Tengo unas copias de seguridad de una base de datos Full y Diferencial, la full estaba programada para hacerse todos los sabados y las diferenciales todos los dias.

    El problema esta uando intento restaurar la base de datos primero restaurando la full con la opcion NONRECOVERY y la diferencial con la opcion RECOVERY y cuando intento restaurar la diferencial me salta el error:

    No se pudo restaurar la copia de seguridad diferencial porque la base de datos no se ha restaurado al estado anterior correcto.

    ¿En que podria estar el problema?

    Sludos y gracias de antemano.

    This differential backup cannot be restored because the database has not been restored to the correct earlier state - See more at: http://www.errortoenglish.com/es/Y3G8V9K2/No-se-puede-restaurar-la-copia-de-seguridad-diferencial-porque-la-base-de-datos-no-se-ha-restaurado-al-estado-anterior-correcto.aspx#sthash.Zy0i5UMt.dpuf

    viernes, 29 de agosto de 2014 12:30

Respuestas

  • Hola.

    Se me ocurre que se haya realizado algún otro backup completo posterior al que has restaurado, siendo eso lo que impida la restauración del diferencial.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    viernes, 29 de agosto de 2014 12:38
    Moderador
  • >>

    El Full es del 23 de agosto y el diferencial es del 25 de agosto el 24 que es domingo no se hizo ningun backup ni full ni diferencial.

    <<

    ¿Seguro?

    ¿Qué resultado da esta consulta?

    USE [MiBaseDeDatos]
    
    -- Get Backup History for required database
    SELECT TOP 100
     s.database_name,
    m.physical_device_name,
    CAST(CAST(s.backup_size / 1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS bkSize,
    CAST(DATEDIFF(second, s.backup_start_date,
    s.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' TimeTaken,
    s.backup_start_date,
    CAST(s.first_lsn AS VARCHAR(50)) AS first_lsn,
    CAST(s.last_lsn AS VARCHAR(50)) AS last_lsn,
    CASE s.[type]
    WHEN 'D' THEN 'Full'
    WHEN 'I' THEN 'Differential'
    WHEN 'L' THEN 'Transaction Log'
    END AS BackupType,
    s.server_name,
    s.recovery_model
    FROM msdb.dbo.backupset s
    INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
    WHERE s.database_name = DB_NAME() -- Remove this line for all the database
    ORDER BY backup_start_date DESC, backup_finish_date


    EntityLite: A Lightweight, Database First, Micro ORM

    viernes, 29 de agosto de 2014 12:53

Todas las respuestas

  • Hola.

    Se me ocurre que se haya realizado algún otro backup completo posterior al que has restaurado, siendo eso lo que impida la restauración del diferencial.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    viernes, 29 de agosto de 2014 12:38
    Moderador
  • Hola.

    El Full es del 23 de agosto y el diferencial es del 25 de agosto el 24 que es domingo no se hizo ningun backup ni full ni diferencial.

    No se si las bases del sistema influllen tambien e esto como la master, model y la msdb.

    Saludos.


    • Editado ErikNeller viernes, 29 de agosto de 2014 12:45
    viernes, 29 de agosto de 2014 12:44
  • Seguramente Alberto estará en lo cierto. Para evitar que vuelva a pasar, cuando se hace una copia de seguridad completa con otros fines que no sean parte del plan de recuperación de desastres, por ejemplo, llevarse la base de datos a otra instancia, debería utilizarse la opción COPY ONLY:

    BACKUP DATABASE MiBaseDeDatos TO DISK = 'La ruta' WITH COPY_ONLY

    Cuando se usa esta opción la siguiente copia de seguridad diferencial no se basará en esta copia completa, sino en la última copia de seguridad completa que no se haya realizado con la opción COPY ONLY.


    EntityLite: A Lightweight, Database First, Micro ORM


    viernes, 29 de agosto de 2014 12:47
  • Hola, gracias por vuestras respuestas.

    Me he dado cuenta de que los LSN son diferentes en el Full backup y en el diferencial.

    ¿No se puede hacer nada para poder restaurarlo?

    Saludos.

    viernes, 29 de agosto de 2014 12:53
  • >>

    El Full es del 23 de agosto y el diferencial es del 25 de agosto el 24 que es domingo no se hizo ningun backup ni full ni diferencial.

    <<

    ¿Seguro?

    ¿Qué resultado da esta consulta?

    USE [MiBaseDeDatos]
    
    -- Get Backup History for required database
    SELECT TOP 100
     s.database_name,
    m.physical_device_name,
    CAST(CAST(s.backup_size / 1000000 AS INT) AS VARCHAR(14)) + ' ' + 'MB' AS bkSize,
    CAST(DATEDIFF(second, s.backup_start_date,
    s.backup_finish_date) AS VARCHAR(4)) + ' ' + 'Seconds' TimeTaken,
    s.backup_start_date,
    CAST(s.first_lsn AS VARCHAR(50)) AS first_lsn,
    CAST(s.last_lsn AS VARCHAR(50)) AS last_lsn,
    CASE s.[type]
    WHEN 'D' THEN 'Full'
    WHEN 'I' THEN 'Differential'
    WHEN 'L' THEN 'Transaction Log'
    END AS BackupType,
    s.server_name,
    s.recovery_model
    FROM msdb.dbo.backupset s
    INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id
    WHERE s.database_name = DB_NAME() -- Remove this line for all the database
    ORDER BY backup_start_date DESC, backup_finish_date


    EntityLite: A Lightweight, Database First, Micro ORM

    viernes, 29 de agosto de 2014 12:53
  • Tendrías que conseguir la última copia de seguridad completa que se hizo antes de la diferencial

    EntityLite: A Lightweight, Database First, Micro ORM

    viernes, 29 de agosto de 2014 12:55
  • El caso es que es la ultima full antes del diferencial que le intento restaurar
    viernes, 29 de agosto de 2014 12:57
  • Hola.

    ¿Puedes facilitarnos el resultado de la sentencia que te facilitó Jesús?


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    sábado, 30 de agosto de 2014 7:44
    Moderador
  • Hola ErikNeller,

    Gracias por consultar por acá, ¿Has resuelto tu consulta? como comenta Alberto ¿Puedes facilitar el resultado de la sentencia por acá? Si has resuelto tu consulta no olvides compartir tu solución por acá.

    Saludos,

    Miguel      

    MSDN/TechNet Soporte Comunidades

    Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema.
    Es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft

    lunes, 1 de septiembre de 2014 21:57
    Moderador