Enquanto estou fazendo minha própria investigação, alguém sabe por que um banco de dados em SIMPLE
modelo de recuperação tem LOG_BACKUP
para o log_reuse_wait_desc
?
SQL Server 2012 SP1. Banco de dados criado há apenas algumas semanas. Sem replicação, sem espelhamento, sem envio de logs e nunca teve nada disso.
Fizemos backup do banco de dados e restauramos para outra instância, mostra SIMPLE
e NOTHING
na log_reuse_wait
outra instância. Mas não acho que restaurar para outra instância seja uma boa maneira de reproduzir o problema, pois a operação de restauração avança/reverte as transações.
Tudo bem, passei ontem dia e noite investigando, testando e tentando reproduzir o problema. Encontrou a causa raiz:
MODEL
banco de dados definido para oSIMPLE
modelo de recuperação.Se o banco de dados modelo foi definido para o
SIMPLE
modelo de recuperação e os bancos de dados do usuário são criados comSIMPLE
o modelo de recuperação, o SQL Server de alguma forma o está tratando como se estivesse noFULL
modelo de recuperação. Portanto, esperando paraLOG_BACKUP
truncar o log.Listei as etapas neste link para mostrar como reproduzi o problema.
Eu acho que a causa raiz é se um banco de dados do usuário foi criado (não alterado depois) com um modelo de recuperação simples, então ele tem esse problema. Eu culpo o banco de dados do modelo, pois é a única maneira de criar um banco de dados do usuário com o modelo de recuperação definido.
Isso está documentado no artigo 2830400 da Base de Conhecimento da Microsoft e foi corrigido no SQL Server 2012 SP1 CU4 e RTM CU7: