Esta es una pregunta de seguimiento a una pregunta anterior sobre por qué no pude reducir el archivo de registro en la base de datos principal.
Para resumir, configuré la creación de reflejo de la base de datos, pero olvidé asegurarme de que el trabajo que respaldaba el registro de transacciones volviera a ejecutarse, y el registro de transacciones creció a casi 60 GB.
Como se configuró la duplicación, este aumento de tamaño se duplicó en el servidor duplicado y, finalmente, ocupó todo el espacio en disco e inutilizó la base de datos duplicada.
Según esta pregunta sobre el mantenimiento del registro de transacciones en una base de datos espejo, no puede hacer una copia de seguridad del registro en el espejo, pero cuando se le pregunta específicamente en los comentarios sobre cómo reducir un archivo de registro demasiado grande en una base de datos espejo, se dejó un comentario que
Una forma de hacerlo sería realizar una conmutación por error a la base de datos reflejada y hacer la reducción allí. Pruebe esto a fondo en un entorno que no sea de producción para asegurarse de que tenga el comportamiento que desea / espera.
Esto parece sugerir que podría haber otras formas de reducir el archivo de registro en un espejo, y este método podría no ser necesariamente seguro en un servidor de producción.
¿Hay alguna manera de reducir de forma segura el archivo de registro de transacciones en un espejo de base de datos?
fuente
Respuestas:
El
DBCC SHRINKFILE
comando se reflejará desde el principal a la base de datos reflejada. Aquí hay alguna prueba.Cree una base de datos de muestra en el principal:
Cree la misma base de datos a partir de una copia de seguridad con
NORECOVERY
:Configure su sesión de duplicación de cualquier manera que elija.
En la base de datos principal, mire los tamaños de archivo de la base de datos:
Mi conjunto de resultados se ve así:
En la base de datos reflejada , cree una instantánea y observe la misma información:
Mi conjunto de resultados tiene el siguiente aspecto:
Ahora haga crecer el archivo de registro de transacciones en la base de datos principal (lo traje a 1 GB):
Mirando el tamaño del registro de transacciones de la base de datos principal , ahora vemos el tamaño ajustado:
Mi conjunto de resultados tiene el siguiente aspecto:
Cree otra instantánea en la base de datos reflejada y observe el tamaño del archivo de registro de transacciones allí:
Mi conjunto de resultados tiene el siguiente aspecto:
Ahora haz lo
DBCC SHRINKFILE
del director :Mi conjunto de resultados es el siguiente:
Cree una tercera y última instantánea en la base de datos reflejada y observe el tamaño:
Y obtengo el siguiente conjunto de resultados:
Como puede ver aquí, el
DBCC SHRINKFILE
comando se refleja en la base de datos reflejada.fuente
DBCC SHRINKFILE
. En cuanto a si puede arreglar su sesión espejo sin eliminar el espejo en esa base de datos, hay un poco más de investigación que tendría que tener lugar allí. Parece que se suspendió debido al tamaño del archivo. ¿Has intentado reanudar a la pareja?