Tengo una base de datos que tiene un archivo de datos de 350 MB (.mdf) y un archivo de registro de 4.9 GB (.ldf). El modelo de recuperación está configurado en FULL
.
Cuando trato de reducir el archivo de registro, no se reduce.
Sé que reducir una base de datos no es bueno y no debería hacerse. Pero todavía estoy tratando de hacerlo por reducir el archivo de registro.
Cuando corrí
DBCC SQLPerf(logspace)
¡Encontré que el tamaño de registro es 4932 MB y el espacio de registro utilizado es 98.76% !
Entonces probé este comando
USE <databasename>;
DBCC loginfo;
Ahora, casi todos los VLF tienen "estado 2", lo que significa que todos están en uso.
Traté de hacer una copia de seguridad del registro y luego reducir el archivo de registro. La reducción no redujo el tamaño.
Cambié el modelo de recuperación SIMPLE
e intenté reducirlo nuevamente, pero esto tampoco ayudó.
Revisé las transacciones abiertas
DBCC opentran (database);
y descubrí que ninguna transacción está abierta ahora.
¿Qué me impide reducir el archivo de registro? ¿Como puedo resolver esto?
fuente
log_reuse_wait_desc
dioACTIVE_TRANSACTION
. Tan pronto como se completó la transacción, la reducción funcionó bien.Los pasos para reducir el registro van a ser
Copia de seguridad del registro de transacciones a través de SSMS o T-SQL y luego realiza una reducción
los comandos para SSMS están bajo las tareas si hace clic derecho en el nombre de la base de datos
Probablemente tengas que hacer esto varias veces
Si hay una transacción o trabajo que bloquea la acción, use el Monitor de actividad para identificar el proceso y eliminarlo, o use el monitor de actividad de trabajo del Agente SQL para finalizar el trabajo.
fuente: http://support.microsoft.com/kb/907511
fuente
Lea Cómo reducir el registro de SQL Server para obtener una explicación de cómo la naturaleza circular del registro puede evitar la reducción después del truncamiento. Es posible que registre el último punto LSN en un VLF que se encuentra en la cola del LDF. Contrarrestar intuitivamente debe avanzar el registro, generando escrituras de registro, para permitir que se reduzca.
fuente
Primero debe crear una copia de seguridad, que depende del modelo de copia de seguridad configurado para la base de datos antes de poder reducirla.
Puedes intentar ejecutar esto:
O puede hacerlo desde SSMS y utilizar las herramientas gráficas disponibles (consulte aquí para obtener más detalles: http://msdn.microsoft.com/en-us/library/ms187510.aspx )
Una vez que haya hecho una copia de seguridad de su base de datos, puede comprimirla. Sin embargo, reducir la base de datos no es una buena idea ya que se producirá una gran fragmentación del índice y la búsqueda de datos será lenta.
Espero que esto ayude.
fuente
He descubierto que tengo que realizar 2 o 3 copias de seguridad tanto de la base de datos como del registro de transacciones para que el registro de transacciones realmente se reduzca de tamaño. Tengo una base de datos que se creó con el modelo de recuperación completa. Todas las noches realiza copias de seguridad de la base de datos y el registro de transacciones, pero inevitablemente el registro de transacciones parece crecer continuamente durante 2-3 semanas. Cuando el espacio en disco restante llegue a 1 GB, veré que el registro de transacciones es de aproximadamente 30 GB. Seguí los pasos recomendados por Microsoft y después de la cuarta o quinta iteración de la copia de seguridad de la base de datos y el registro de transacciones, el registro de transacciones finalmente liberará su espacio extra y se reducirá. Luego vuelvo y elimino las múltiples copias de seguridad que he creado.
fuente
Mi trabajo para la Replicación que está bloqueando la reducción del archivo de registro es:
En mi caso funcionó. Después de traer DB, el registro en línea se creó automáticamente y su tamaño era de 512 kb en lugar de 70 GB. Pero esto es solo una solución. El problema raíz no está resuelto. En mi caso estamos usando replicación.
fuente