Reducir el tamaño del fichero de log en SQL Server 2005

Hoy me ha tocado realizar tareas de mantenimiento en uno de los servidores de desarrollo, y he visto que gran parte del espacio en disco se lo estaba comiendo uno de los ficheros de una base de datos SQL Server de una aplicación de SharePoint.

Para los que no tengan muy claro, como almacena SQL Server las bases de datos, decir que hay al menos dos ficheros por base de datos. Uno de estos ficheros es donde estarán almacenados los datos de nuestras tablas, vistas y demás objetos (el cual tiene extensión *.mdf)… y el otro es el fichero de transacciones (el cual tiene extensión *.ldf). El fichero de transacciones consiste en una serie de registros de todas las modificaciones de la base de datos y de la transacción que ha realizado cada modificación. En el registro de transacciones figura el inicio de cada transacción. También registra los cambios de los datos y facilita suficiente información para deshacer las modificaciones (si fuera necesario posteriormente) realizadas durante cada transacción.

Como os podeis imaginar, el archivo *.ldf o de transacciones puede ocupar un tamaño considerable, por lo que a veces, nos interesa reducirlo o truncarlo. Si no nos interesa realizar una copia previa de este archivo, lo mas rápido es ejecutar una consulta SQL, para ello, abrimos el analizador de consultas e introducimos esta query:

USE MiBase
CHECKPOINT
EXEC sp_addumpdevice 'disk', 'CopiaMiBase', 'd:LogMiBase.bak'
BACKUP DATABASE MiBase TO CopiaMiBase
BACKUP LOG MiBase WITH TRUNCATE_ONLY
DBCC SHRINKFILE (MiBase_Log, 100)
Hay que sustituir MiBase por el nombre de la base de datos en la que queramos reducir el archivo de transacciones. Existe un paramento que podemos modificar a nuestro gusto, que es el tamaño del archivo *.ldf, actualmente establecido a 100 (en megabytes, expresado como un número entero). Aquí tenéis más información sobre la instruccion DBCC SHRINKFILE y sus parámetros.

2 pensamientos en “Reducir el tamaño del fichero de log en SQL Server 2005

  1. Gonzalo

    Siempre puedes usar el SQL Server Management Studio y usar la opción de Tareas > Reducir sobre la base de datos.
    También es importante configurar bien los backups periodicos de la base de datos para reducir los logs de transacciones de forma automática.

    Responder
    1. OMG

      Muchas gracias Gonzalo por tu aportación… ya sabes que prefiero hacer las cosas, sabiendo que comandos se ejecutan por detrás 😛 pero sin duda una forma mucho mas cómoda y visual 😉

      Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *