Aqui está o meu problema. Estou tentando mover um banco de dados para um novo servidor por meio de uma restauração completa e, em seguida, com um rápido backup / restauração diferencial. Posso fazer uma restauração completa sem problemas, mas ao restaurar o backup diferencial, recebo o seguinte aviso:
Mensagem 3127, Nível 16, Estado 1, Linha 1 O arquivo 'Database_Log2' do banco de dados restaurado 'DatabaseName' está sendo deixado no estado defunct porque o banco de dados está usando o modelo de recuperação simples e o arquivo está marcado para acesso de leitura e gravação. Portanto, apenas os arquivos somente leitura podem ser recuperados pela restauração fragmentada.
O banco de dados restaura e é considerado online, mas qualquer operação de backup falha devido a esse arquivo DEFUNCT com o seguinte erro:
Msg 3636, Nível 16, Estado 2, Linha 1 Ocorreu um erro ao processar os metadados 'BackupMetadata' para o ID de banco de dados 10 ID do arquivo 6. Msg 3046, Nível 16, Estado 2, Linha 1 Metadados inconsistentes foram encontrados. A única operação de backup possível é um backup de log de cauda usando a opção WITH CONTINUE_AFTER_ERROR ou NO_TRUNCATE. A mensagem 3013, nível 16, estado 1, linha 1 BACKUP DATABASE está sendo finalizada de maneira anormal.
Se eu fizer um RESTORE FILELISTONLY no total e no diferencial, ambos me fornecerão a mesma saída, que corresponde ao que eu vejo em sys.database_files no banco de dados de origem. O servidor é o SQL2012 SP1, na edição Developer.
Posso fazer um backup completo e imediatamente fazer um diferencial, e restaurar esses arquivos em um banco de dados diferente no mesmo servidor e ver exatamente o mesmo problema; portanto, há algo na maneira como o diferencial é criado que está causando isso. Se eu restaurar o backup completo com recuperação, não há problema. Não sei se esse arquivo existia nesse banco de dados, mas é perfeitamente possível que ele existisse e foi excluído há muito tempo. Se eu consultar sys.database_files no banco de dados restaurado, o arquivo DEFUNCT terá um valor para drop_lsn, o que parece confirmar isso. Atualmente, no banco de dados de origem, existe apenas um grupo de arquivos (PRIMARY), 4 arquivos de dados e um arquivo de log.
Alguma ideia?