locked
RESTORE DATABASE - URGÊNTE RRS feed

  • Pergunta

  •  

    Bom dia,

     

    Estou com um problema no RESTORE de um banco aqui.

    TEnho um Backup FULL feito no domingo e todos os dias da semana 2 de LOG (uma meio dia e outro no fim da tarde).

    Todos gravados no mesmo Device.

     

    Quando fui restaurar, primeiro restaurei o FULL com opção NORECOVERY e quando tentei restaurar o primeiro de LOG apresentou essa msg de erro (abaixo), como se o número do de LOG estivesse menor que o FULL.

     

    The log in this backup set begins at LSN 46417000002036400001, which is too late to apply to the database. An earlier log backup that includes LSN 45976000004416700001 can be restored.

    RESTORE LOG is terminating abnormally.

     

     

    Alguém pode ajudar?

     

    Obrigado.

    quinta-feira, 24 de janeiro de 2008 11:37

Todas as Respostas

  •  

    vc. da um apeend nesses backups de log ou sempre cria um novo ?, se for append pode ser que vc. esteja especificano o file interno fora da sequencia.

     

    de um

     

    RESTORE HEADERONLY from disk 'caminho\arquivo'

     

    Abs;

     

     

    quinta-feira, 24 de janeiro de 2008 11:44
  • Bom Dia,

     

    O LSN significa Log Sequence Number. Toda transação é marcada no log com um LSN. Ex:

     

    LSN001 - Update

    LSN002 - Delete

    LSN003 - Begin Tran

    LSN004 - Insert

    LSN005 - Delete

    LSN006 - Commit

    LSN007 - Create Index

     

    Quando o backup full é feito, ele guarda o último LSN que foi contemplado no backup. Suponha que um backup full foi feito e foi contemplado até o LSN002.

     

    Quando o backup de log é feito, ele guarda do LSN inicial (que é o LSN logo após o último backup de log) até o LSN final. Suponha que três backups de log sejam feitos segundo a tabela abaixo:

     

    Log1 - LSN001 até LSN002

    Log2 - LSN003 até LSN006

    Log3 - LSN007

     

    Se você restaurar o backup full, você estará na posição do LSN002. Nesse caso será preciso aplicar ainda o Log2 e o Log3. Se você tentar aplicar o Log3 direto, haverá um GAP, pois, o FULL parou no LSN002 e o Log 3 começa no LSN007. Esse GAP não é permitido, pois, deixaria o banco de dados inconsistente. Quando há essa GAP, a mensagem de erro é gerada. "Too Late" significa que o Log a ser aplicado está muito "tarde" ou seja, faltam logs na seqüência.

     

    Como você grava vários arquivos no mesmo Device, verifique se não há outros arquivos de Log nesse Device. No entanto, se você não usa o Append e sim o OverWrite, o device terá sempre o último log e nesse caso, não será possível aplicar o último log (justamente por conta do GAP).

     

    O comando do Colla poderá ajudá-lo nessa.

     

    [ ]s,

     

    Gustavo

    quinta-feira, 24 de janeiro de 2008 12:03
  • O backup FULL eu sobescrevo, mas os de LOG durante a semana faço append.

    O resultado do RESTORE HEADERONLY contém muitas colunas, fica dificil postar... pode ser por email?

     

    quinta-feira, 24 de janeiro de 2008 12:07
  • se vc. sempre faz apeend, vc. deve ter muitos backup de log dentro do arquivo, procure pelo mais recente e venha ate o primeiro backup de log da semana depois do full, entao no restore vc. precisa especificar o numero do file dentro do backup na intrucao restore. veja o exemplo no books on line.

     

    qualquer cosia retorne

     

    quinta-feira, 24 de janeiro de 2008 12:13
  • Bom Dia,

     

    Não é necessário. Basta apenas que ele tenha mais de uma linha. Ele tem mais de uma linha ? Cada linha significa que um backup foi realizado. É preciso restaurar o FULL e aplicar o backup de log correto desse device.

     

    [ ]s,

     

    Gustavo

    quinta-feira, 24 de janeiro de 2008 12:13
  • Bem ele tem 6 linhas, ou seja:

     

    1 - FULL

    2 - LOG segunda meio-dia

    3 - LOG segunda final do dia

    4 - LOG terça meio-dia

    5 - LOG terça final do dia

    6 - LOG quarta meio-dia

     

    No caso que o Colla fala que devo ter vários nessa arquivo, o FULL semanal não zera todos de LOG pois está no mesmo arquivo e é sobescrito?

     

    FirstLsn                           LastLsn                          CheckpointLsn               DifferentialBaseLsn
    45976000004414200003  45976000004416700001  45976000004414200007  45327000004744100005
    46417000002036400001  46417000003542500001  46417000002036400001  45976000004414200007
    46417000003542500001  46418000000838300001  46417000004089800001  45976000004414200007
    46418000000838300001  46418000003238400001  46418000002895300001  45976000004414200007
    46418000003238400001  46418000004017500001  46418000002895300001  45976000004414200007
    46418000004017500001  46523000002223000001  46523000000619500002  45976000004414200007

    quinta-feira, 24 de janeiro de 2008 12:29
  • Oi Edivar,

     

    Observe que o LastLSN de uma linha é sempre o FirstLsn da linha seguinte. Isso mostar que você está com a cadeia de logs completa para restaurar o backup. Como a coluna DifferentialBaseLsn mudou da linha 1 para a linha 2 e permaneceu constante, acredito que a linha 2 é o backup full e as demais linhas são o backup de log. Tente fazer o seguinte:

     

    Code Snippet

    RESTORE DATABASE Banco FROM Device WITH FILE = 2, NORECOVERY

    RESTORE Log Banco FROM Device WITH FILE = 3, NORECOVERY

    RESTORE Log Banco FROM Device WITH FILE = 4, NORECOVERY

    RESTORE Log Banco FROM Device WITH FILE = 5, NORECOVERY

    RESTORE Log Banco FROM Device WITH FILE = 6, RECOVERY

     

     

    [ ]s,

     

    Gustavo

    quinta-feira, 24 de janeiro de 2008 12:35
  • Ao rodar o comando, ele informa que o o file 2 "... was created by BACKUP LOG and cannot be used for this restore operation."

    Ou seja, ele realmante é de LOG, o FULL é o 1.

     

    quinta-feira, 24 de janeiro de 2008 12:43
  • Oi Edivar,

     

    Após executar o Restore Header Only, dê uma olhada na coluna Type desses arquivos. O backup de log possui o type igual a 2 e o backup full possui o type igual a 1. Restaure o arquivo que possui o backup que possui a coluna type igual a 1 e depois aplique os logs.

     

    [ ]s,

     

    Gustavo

     

    quinta-feira, 24 de janeiro de 2008 12:56
  • Por isso que queria postar o resultado completo da consulta.

    O tipo ta do jeito que falei:

     

    1 - FULL, 2 - LOG, 3 - LOG, 4 - LOG, 5 - LOG, 6 - LOG

     

    Dessa forma quando faço:

     

    RESTORE DATABASE Banco
    FROM DISK = 'C:\BACKUP\BACKUP\Banco.BAK'
    WITH FILE = 1, NORECOVERY

    RESTORE LOG Banco
    FROM DISK = 'C:\BACKUP\BACKUP\Banco.BAK'
    WITH FILE = 2, NORECOVERY

    RESTORE Log Banco
     FROM DISK = 'C:\BACKUP\BACKUP\Banco.BAK'
    WITH FILE = 3, NORECOVERY

    RESTORE Log Banco
    FROM DISK = 'C:\BACKUP\BACKUP\Banco.BAK'
    WITH FILE = 4, NORECOVERY

    RESTORE Log Banco
    FROM DISK = 'C:\BACKUP\BACKUP\Banco.BAK'
    WITH FILE = 5, NORECOVERY

    RESTORE Log Banco
    FROM DISK = 'C:\BACKUP\BACKUP\Banco.BAK'
    WITH FILE = 6, RECOVERY

    Não está dando certo, ele restaura o FULL mas a partir do de LOG da erro, veja abaixo:

     


    Processed 165512 pages for database 'Banco', file 'Banco_Data' on file 1.
    Processed 2 pages for database 'Banco', file 'Banco_Log' on file 1.
    RESTORE DATABASE successfully processed 165514 pages in 199.932 seconds (6.781 MB/sec).
    Server: Msg 4305, Level 16, State 1, Line 5
    The log in this backup set begins at LSN 46417000002036400001, which is too late to apply to the database. An earlier log backup that includes LSN 45976000004416700001 can be restored.
    Server: Msg 3013, Level 16, State 1, Line 5
    RESTORE LOG is terminating abnormally.
    Server: Msg 4305, Level 16, State 1, Line 9
    The log in this backup set begins at LSN 46417000003542500001, which is too late to apply to the database. An earlier log backup that includes LSN 45976000004416700001 can be restored.
    Server: Msg 3013, Level 16, State 1, Line 9
    RESTORE LOG is terminating abnormally.
    Server: Msg 4305, Level 16, State 1, Line 13
    The log in this backup set begins at LSN 46418000000838300001, which is too late to apply to the database. An earlier log backup that includes LSN 45976000004416700001 can be restored.
    Server: Msg 3013, Level 16, State 1, Line 13
    RESTORE LOG is terminating abnormally.
    Server: Msg 4305, Level 16, State 1, Line 17
    The log in this backup set begins at LSN 46418000003238400001, which is too late to apply to the database. An earlier log backup that includes LSN 45976000004416700001 can be restored.
    Server: Msg 3013, Level 16, State 1, Line 17
    RESTORE LOG is terminating abnormally.
    Server: Msg 4305, Level 16, State 1, Line 21
    The log in this backup set begins at LSN 46418000004017500001, which is too late to apply to the database. An earlier log backup that includes LSN 45976000004416700001 can be restored.
    Server: Msg 3013, Level 16, State 1, Line 21
    RESTORE LOG is terminating abnormally.

    quinta-feira, 24 de janeiro de 2008 13:05
  • vc. esta executando um log mais antigo que o ultimo full, seu problema esta so na sequencia. quando vc. usa o full vc. da um overwrite ok ?, e para este arquivo .bak tambem contem os backups de log ?

     

    quinta-feira, 24 de janeiro de 2008 13:53
  •  

    Sim, ele tem o FULL e LOG juntos
    quinta-feira, 24 de janeiro de 2008 14:15
  • pode postar todas as colunas do restore RESTORE HEADERONLY

     

    ou pode colar um excel e evnair por email

     

    mcolla@bol.com.br

     

     

    quinta-feira, 24 de janeiro de 2008 15:44
  •  

    Olá Colla, mandei o email com o arquivo..

     

    Obrigado.

    quinta-feira, 24 de janeiro de 2008 16:50
  • ainda nao recebi, mandou para mcolla@bol.com.br ?

     

    abs;

     

    quinta-feira, 24 de janeiro de 2008 17:12
  • Olá,

     

    Ao que parece há um GAP entre o backup full (termina no LSN 45976000004416700001) e o log (começa no 46417000002036400001). Em algum momento da rotina, deve ter ocorrido a sobrescrita. Não será possível restaurar o backup com esses arquivos.

     

    [ ]s,

     

    Gustavo 

     

    quinta-feira, 24 de janeiro de 2008 17:18
  • Pessoal obrigado por tudo, mas acho que o backup por algum motivo perdeu a sincronia.

     

     

    Obrigado a todos.

     

    quinta-feira, 24 de janeiro de 2008 18:22
  • Olá Edivar,

     

    Algumas vezes, utilizar apenas o backup de log pode representar uma certa "fragilidade" por conta dos LSNs principalmente para cadeias de log muito grandes. A menos que você queira restaurar pontos específicos, você poderia considerar considerar utilizar o diferencial ao invés do backup de log.

     

    Independente disso, você também poderia intercalar os backups diferenciais e de logs para ter uma espécie de contigência (a limitação de um é o ponto forte do outro). O diferencial pode eliminar o problemas dos LSNs fora da seqüência enquanto os de log podem possibilitar restauração em pontos específicos.

     

    [ ]s,

     

    Gustavo

     

    quinta-feira, 24 de janeiro de 2008 18:27