locked
Restore Backup Em outro servidor - SQL 2008 RRS feed

  • Pergunta

  • Boa tarde,

    Estou trocando o servidor SQL Ent 2008,  no novo servidor eu criei a base novamente porem com um espaço maior nos filegroup e em discos separados.

    Quando faço o restore do Backup Full usando o WITH MOVE ele restaura sem problemas, porém, quando vou restaurar o Backup Dif ele aparece o erro abaixo :

    This differential backup cannot be restored because the database has not been restored to the correct earlier state.

    Já procurei alguns itens ou dicas na internet mas ainda nao consegui resolver


    OBS: Ao tentar restaurar o LOG também da erro
    terça-feira, 23 de fevereiro de 2010 18:37

Respostas

  • Rodrigo,

    Para verificar se o seu Backup Differential referencia o seu Backup FULL Restaurado.
    Utilize o comando RESTORE HEARDERONLY contra o Backup Set do Backup Full e verifique a coluna First_lsn.

    Após isso,utilize o comando RESTORE HEARDERONLY contra o Backup Set do Backup Differencial e verifique se o valor na coluna DatabaseBackupLsn é o mesmo da coluna First_lsn da saída do comando RESTORE HEARDERONLY contra o Backup Set do Backup Full.

    A coluna DatabaseBackupLsn registra o LSN do mais recente Backup Full.Caso os valores sejam diferentes não será possível o restore.

    Aguardo um retorno,até mais!


    Felipe Santana - MCP
    quinta-feira, 25 de fevereiro de 2010 19:35

Todas as Respostas

  • Rodrigo,

    você deve ter executado o RESTORE com as opções default, que inclui o RECOVERY como opção. Isto faz com que a base seja aberta para uso após o restore e não permite aplicar logs ou backups diferenciais.

    Para fazer o restore do jeito que você precisa, o primeiro restore tem que usar a opção NORECOVERY e o RESTORE posterior a opção RECOVERY, conforme abaixo
    .RESTORE DATABASE <nome_do_db>
       FROM DISK = '<caminho_do_backup>'
       WITH MOVE FILE .....
          NORECOVERY;
    
    RESTORE DATABASE <nome_do_db>
       FROM DISK = '<caminho_do_backup>'
    ....
          RECOVERY;
    

    Se a resposta resolveu sua questão ou problema, classifique-a para manter a qualidade do forum e a confiabilidade dos participantes.

    Alex M. Bastos
    http://bastosalex.spaces.live.com
    terça-feira, 23 de fevereiro de 2010 18:47
  • Alex,

    estou utilizando o NORECOVERY no 1 e como terei que restaurar mais arquivos no 2, mas tentei não utilizar no 2 e continuou dando erro

    Segue o Script do FULL

    RESTORE DATABASE BASE FROM  DISK = N'D:\Bkp_Full.bak' 
    WITH  FILE = 1, REPLACE,  
    MOVE N'BASE_Data1' TO N'D:\BASE\BASE_Data1.mdf',  
    MOVE N'BASE_Data2' TO N'E:\BASE\BASE_Data2.ndf',  
    MOVE N'BASE_Data3' TO N'F:\BASE\BASE_Data3.ndf',  
    MOVE N'BASE_log' TO N'D:\BASE\BASE_log.ldf',  
    NORECOVERY, NOUNLOAD
    E o Script do DIF

    RESTORE DATABASE BASE FROM  DISK = N'D:\Bkp_Dif.bak' 
    WITH  FILE = 1, REPLACE,  
    MOVE N'BASE_Data1' TO N'D:\BASE\BASE_Data1.mdf',  
    MOVE N'BASE_Data2' TO N'E:\BASE\BASE_Data2.ndf',  
    MOVE N'BASE_Data3' TO N'F:\BASE\BASE_Data3.ndf',  
    MOVE N'BASE_log' TO N'D:\BASE\BASE_log.ldf',  
    NORECOVERY, NOUNLOAD

    terça-feira, 23 de fevereiro de 2010 19:00
  • Rodrigo,

    Você tem certeza que seu backup Differential referencia corretamente seu backup FULL ? ou seja,após ter feito esse backup Differential não foi realizado nenhum outro backup FULL da sua base ?

    Aguardo resposta.
    Até mais.
    Felipe Santana - MCP
    terça-feira, 23 de fevereiro de 2010 19:30
  • Felipe,

    verifiquei aqui e não tem outro backup, só de LOG ..
    só se outro adm fez o backup em outro local  .. o servidor antigo o SQL está inativo, consegui ver em algum log se foi feito ?

    Os dados não foram alterados após o backup FULL,  a base já está até em produção

    Mas gostaria de verificar o erro porque num futuro pode ocorrer de os dados serem alterados, vou testar isso até em outra base de Teste, podendo matar se o problema é que foi gerado outro Backup
    terça-feira, 23 de fevereiro de 2010 20:29
  • Rodrigo,

    Você esta restaurando primeiro o Full e depois o DIFF?

    No script que você postou com o código do Restore para o Diferencial, gostaria de saber o porque você esta utilizando a opção NoRecovery?
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quinta-feira, 25 de fevereiro de 2010 12:44
    Moderador
  • Rodrigo,

    Para verificar se o seu Backup Differential referencia o seu Backup FULL Restaurado.
    Utilize o comando RESTORE HEARDERONLY contra o Backup Set do Backup Full e verifique a coluna First_lsn.

    Após isso,utilize o comando RESTORE HEARDERONLY contra o Backup Set do Backup Differencial e verifique se o valor na coluna DatabaseBackupLsn é o mesmo da coluna First_lsn da saída do comando RESTORE HEARDERONLY contra o Backup Set do Backup Full.

    A coluna DatabaseBackupLsn registra o LSN do mais recente Backup Full.Caso os valores sejam diferentes não será possível o restore.

    Aguardo um retorno,até mais!


    Felipe Santana - MCP
    quinta-feira, 25 de fevereiro de 2010 19:35