Sei que existem perguntas que resolvem o problema de um banco de dados ficar parado no RESTORING
estado e usaram essas soluções para colocar manualmente o banco de dados on-line novamente, mas meu cenário é um pouco diferente.
Tenho uma restauração automatizada usando scripts do Powershell que restaura uma cópia da produção em uma instância de DEV. Os scripts permanecem inalterados por cerca de um ano e, ocasionalmente, o processo de restauração termina, mas o banco de dados restaurado fica parado no RESTORING
estado (às vezes o script funciona bem, às vezes falha dessa forma).
Toda vez, se eu reexecutar manualmente o processo, ele funciona ou se eu restauro manualmente o banco de dados da interface do usuário do SSMS ou através do T-SQL, ele é concluído sem problemas.
Encontrei respostas recomendadas para executar CHECKDB
no banco de dados restaurado, mas nada saiu como causa para esse problema.
Como os scripts de restauração restauram um backup COMPLETO do banco de dados e usam uma "WITH RECOVERY"
opção, estou tentando descobrir o que pode estar parando o processo de restauração, embora eu esteja realmente restaurando-o usando "WITH RECOVERY"
.
Todas as sugestões são realmente apreciadas, pois estou tentando entender por que isso está acontecendo de tempos em tempos.
Eu gostaria muito de resolver a causa raiz do problema, em vez de tratar os sintomas, que é restaurar manualmente o banco de dados mais uma vez.
Atualizar:
Github Gist como @Brent recomendado - aqui .
fonte
EXEC sys.xp_readerrorlog 0,1;
- procure mensagens durante a operação de restauração.Respostas:
A navalha de Occam sugere começar com o óbvio:
Se o seu script às vezes deixar um banco de dados em estado de restauração, depure o script.
Comece registrando o que está fazendo em uma tabela ou arquivo. Em seguida, quando você terminar com o banco de dados em estado de restauração, volte pelos seus logs para ver o que deu errado. (Se você quer um segundo olhar da comunidade, tente fazer o upload do seu script como Gistub Gist, mas lembre-se de que quanto maior, mais difícil será para as pessoas encontrarem bugs.)
Se você não quiser fazer isso, tente executar um rastreio Profiler ou Extended Events para rastrear os eventos de restauração, mas seja avisado - é muito mais difícil do que parece. (Leia os comentários nessa postagem para obter ainda mais idéias dos leitores que eles tentaram e falharam.)
fonte