Ocasionalmente, estou tendo problemas para restaurar diferenciais de banco de dados. Estou recebendo o erro "o backup diferencial não pode ser restaurado porque o banco de dados não foi restaurado para corrigir o estado anterior." Ao pesquisar o problema, parece que o diferencial específico com o qual estou tendo problemas está fora de sequência.
Existe uma maneira de verificar o database_backup_lsn do arquivo de backup (.bak) que estou recebendo? Estou obtendo os arquivos de backup completos/diferenciais de um fornecedor e não é fácil para mim consultar o banco de dados e o msdb de origem...
Quando tento restaurar o arquivo diferencial problemático, posso ver alguns valores lsn na janela do SQL Server Management Studio. No entanto, não consigo entender se consigo descobrir se o diferencial está fora de sequência. Vou colar as informações do lsn abaixo para ver se mais alguém consegue descobrir a partir dessas informações. Só posso não estar entendendo como o lsn funciona.
first lsn last lsn checkpoint lsn full lsn start date finish date
12642000000130300283 12642000000188400001 12642000000130300283 12642000000130300283 9/17/2011 23:53 9/17/2011 23:56
12742000000735900168 12742000000757500001 12742000000735900168 12742000000735900168 9/18/2011 23:24 9/18/2011 23:25
12951000012892000172 12951000012922000001 12951000012892000172 12951000012892000172 9/19/2011 23:27 9/19/2011 23:28
13123000002683100125 13123000003655500001 13123000002683100125 13123000002683100125 9/20/2011 23:26 9/20/2011 23:26
O primeiro registro é o db completo e os 3 subsequentes são diferenciais. O completo e os 2 primeiros diferenciais restauram bem. É o diferencial final que não está restaurando e apresentando a mensagem acima.
obrigado.
Para verificar o número LSN do arquivo de backup, faça:
O conjunto de resultados terá uma coluna que mostrará o último número LSN. Como gbn disse, para restaurar a partir de um backup diff, você precisa de um backup completo + último diff do mesmo conjunto de backup.