Modelo de recuperação simples do SQL Server 2012 com LOG_BACKUP log_reuse_wait_desc

11

Enquanto estou fazendo minha própria investigação, alguém sabe por que um banco de dados no SIMPLEmodelo de recuperação possui LOG_BACKUPpara 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 nenhum deles.

Fizemos backup do banco de dados e restauramos em outra instância, mostra SIMPLEe NOTHINGna log_reuse_waitoutra instância. Mas não acho que a restauração em outra instância seja uma boa maneira de reproduzir o problema, pois a operação de restauração reverte / retrocede transações.

Travis
fonte

Respostas:

11

Tudo bem, passou ontem dia e noite investigando, testando e tentando reproduzir o problema. Encontrou a causa raiz:

MODELbanco de dados definido para o SIMPLEmodelo de recuperação.

Se o banco de dados do modelo foi definido como o SIMPLEmodelo de recuperação e os bancos de dados do usuário são criados com o SIMPLEmodelo de recuperação, o SQL Server de alguma forma está tratando-o como se estivesse no FULLmodelo de recuperação. Portanto, aguarde para LOG_BACKUPtruncar o log.

Eu 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 o modelo de recuperação simples, então ele tem esse problema. Eu o culpo no banco de dados do modelo, pois essa é 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 Dados de Conhecimento da Microsoft e foi corrigido no SQL Server 2012 SP1 CU4 e RTM CU7:

Travis
fonte