Modèle de récupération simple SQL Server 2012 avec LOG_BACKUP log_reuse_wait_desc

11

Pendant que je fais ma propre enquête, quelqu'un sait-il pourquoi une base de données dans le SIMPLEmodèle de récupération a LOG_BACKUPpour le log_reuse_wait_desc?

SQL Server 2012 SP1. Base de données créée il y a quelques semaines à peine. Pas de réplication, pas de mise en miroir, pas d'envoi de journaux, et n'en a jamais eu.

Nous avons sauvegardé la base de données et restaurons à une autre instance, il montre SIMPLEet NOTHINGdans log_reuse_waitl'autre cas. Mais je ne pense pas que la restauration sur une autre instance soit un bon moyen de reproduire le problème lorsque l'opération de restauration fait avancer / annuler les transactions.

Travis
la source

Réponses:

11

D'accord, j'ai passé hier jour et nuit à enquêter, à tester et à essayer de reproduire le problème. Trouvé la cause première:

MODELbase de données définie sur le SIMPLEmodèle de récupération.

Si la base de données modèle a été définie sur le SIMPLEmodèle de récupération et que les bases de données utilisateur sont créées avec le SIMPLEmodèle de récupération, SQL Server la traite en quelque sorte comme si elle se trouvait dans le FULLmodèle de récupération. D'où l'attente LOG_BACKUPde tronquer le journal.

J'ai répertorié les étapes de ce lien pour montrer comment j'ai reproduit le problème.

Je pense que la cause principale est que si une base de données utilisateur a été créée (et non modifiée après) avec un modèle de récupération simple, elle a ce problème. Je le blâme sur la base de données du modèle car c'est la seule façon de créer une base de données utilisateur avec le modèle de récupération défini.

Cela est documenté dans l'article 2830400 de la Base de connaissances Microsoft et est résolu dans SQL Server 2012 SP1 CU4 et RTM CU7:

Travis
la source