Eu tenho uma situação que não é fácil de entender e pensei em perguntar neste fórum se outras pessoas podem ter sugestões.
Estou executando o SQL Server 2008 R2 Standard SP3 no Windows Server 2008R2 Enterprise.
Um banco de dados precisava de manutenção e, após o fato, eu precisava restaurar em outro servidor. Eu tenho um backup de banco de dados completo feito com COPY_ONLY mais um conjunto de 4 backups de tlog.
- antes de iniciar, crie tlogbackup1
- mudar de
FULL
paraBULK_LOGGED
modelo de recuperação - adicionar novo grupo de arquivos
- adicionar arquivo ao newfilegroup
- defina newfilegroup como padrão
- selecione na tabela (no novo grupo de arquivos)
- soltar tabela original
- excluir arquivo original
- excluir grupo de arquivos original
- alterar o nome da nova tabela para corresponder à tabela original
- alterar o nome do arquivo do newfilegroup para corresponder ao grupo de arquivos original
- alterar o nome do arquivo no catálogo para corresponder ao nome do arquivo original
- alterar o nome do arquivo no nível do SO para corresponder ao nome do arquivo original
- defina o grupo de arquivos padrão como o original
- trazer db online
- mudar de
BULK_LOGGED
paraFULL
modelo de recuperação - Após a conclusão de todas as etapas, crie tlogbackup2
A restauração de todos os backups deve usar WITH MOVE, devido a alterações na letra da unidade no servidor de restauração.
Etapas de recuperação:
RESTORE database SomeDB FROM DISK = 'D:\REPRO\SomeDB.bak'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
RESTORE LOG SomeDB FROM DISK = 'D:\REPRO\tlogbackup1.trn'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
RESTORE LOG SomeDB FROM DISK = 'D:\REPRO\tlogbackup2.trn'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
A restauração final do tlog chega a 100% e falha com o erro 3456:
Processado 368 páginas para o banco de dados 'SomeDB', arquivo 'SystemData' no arquivo 1.
Páginas processadas 7656520 para o banco de dados 'SomeDB', arquivo 'SystemDataPDS' no arquivo 1.
172430 páginas processadas para o banco de dados 'SomeDB', arquivo 'SystemData_log' no arquivo 1.
A mensagem 3456, nível 16, estado 1, linha 1
não pôde refazer o registro de log (210388: 123648: 232), para o ID da transação (0: 1016710921), na página (4: 8088), banco de dados 'SomeDB' (ID do banco de dados 6) . Página: LSN = (0: 0: 1), tipo = 11. Log: OpCode = 4, contexto 11, PrevPageLSN: (210388: 122007: 1). Restaure a partir de um backup do banco de dados ou repare o banco de dados. A mensagem 3013, nível 16, estado 1, linha 1 RESTORE LOG está sendo finalizada de maneira anormal.
Apenas para verificar se o backup completo do banco de dados estava ok, restaurei a CHECKDB
execução e não houve erros.
Todo o feedback recebido.
Desde já, obrigado,
Ned Otter