Modelo de recuperación simple de SQL Server 2012 con LOG_BACKUP log_reuse_wait_desc

11

Mientras estoy haciendo mi propia investigación, ¿alguien sabe por qué una base de datos en el SIMPLEmodelo de recuperación tiene LOG_BACKUPpara el log_reuse_wait_desc?

SQL Server 2012 SP1. Base de datos creada hace solo unas semanas. Sin replicación, sin duplicación, sin envío de registros, y nunca ha tenido ninguno de esos.

Hicimos una copia de seguridad de la base de datos y la restauramos en otra instancia, se muestra SIMPLEy NOTHINGen log_reuse_waitla otra instancia. Pero no creo que restaurar a otra instancia sea una buena forma de reproducir el problema, ya que la operación de restauración revierte / revierte transacciones.

Travis
fuente

Respuestas:

11

Muy bien, pasé ayer día y noche investigando, probando e intentando reproducir el problema. Encontró la causa raíz:

MODELbase de datos establecida para el SIMPLEmodelo de recuperación.

Si la base de datos del modelo se ha establecido en el SIMPLEmodelo de recuperación, y las bases de datos de usuarios se crean con el SIMPLEmodelo de recuperación, SQL Server de alguna manera lo trata como si estuviera en el FULLmodelo de recuperación. Por lo tanto, esperando para LOG_BACKUPtruncar el registro.

He enumerado los pasos en este enlace para mostrar cómo reproduje el problema.

Creo que la causa raíz es si se creó una base de datos de usuarios (no se modificó después) con un modelo de recuperación simple, entonces tiene este problema. Lo culpo a la base de datos modelo, ya que es la única forma de crear una base de datos de usuario con el modelo de recuperación definido.

Esto se documenta en el artículo 2830400 de Microsoft Knowledge Base y se corrige en SQL Server 2012 SP1 CU4 y RTM CU7:

Travis
fuente