Inquiridor
RESTORE DATABASE - URGÊNTE

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 45976000004414200007quinta-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 SnippetRESTORE
DATABASE Banco FROM Device WITH FILE = 2, NORECOVERYRESTORE
Log Banco FROM Device WITH FILE = 3, NORECOVERYRESTORE
Log Banco FROM Device WITH FILE = 4, NORECOVERYRESTORE
Log Banco FROM Device WITH FILE = 5, NORECOVERYRESTORE
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, NORECOVERYRESTORE LOG Banco
FROM DISK = 'C:\BACKUP\BACKUP\Banco.BAK'
WITH FILE = 2, NORECOVERYRESTORE Log Banco
FROM DISK = 'C:\BACKUP\BACKUP\Banco.BAK'
WITH FILE = 3, NORECOVERYRESTORE Log Banco
FROM DISK = 'C:\BACKUP\BACKUP\Banco.BAK'
WITH FILE = 4, NORECOVERYRESTORE Log Banco
FROM DISK = 'C:\BACKUP\BACKUP\Banco.BAK'
WITH FILE = 5, NORECOVERYRESTORE Log Banco
FROM DISK = 'C:\BACKUP\BACKUP\Banco.BAK'
WITH FILE = 6, RECOVERYNã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
-
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
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 -
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