Formas de reducir el archivo de log de una base de datos en SQL Server

Hoy voy a explicaros como podéis reducir el archivo de log de una base de datos en SQL Server. Esto puede seros útil en aquellos casos en los que el archivo de log ha crecido mucho y necesitéis recuperar espacio.

Reducción del archivo de log mediante interfaz gráfica

Para reducir el archivo de log mediante interfaz gráfica tendremos que abrir la aplicación Microsoft SQL Server Management Studio, posicionarnos sobre la base de datos a la cual queremos reducir el log y con el botón derecho seleccionar la opción Tarea-Reducir-Archivos.

En tipo de archivo seleccionamos Registro (en espacio disponible podremos saber el espacio que liberaremos al ejecutar la acción), dejamos el resto de opciones por defecto y pulsamos en Aceptar para que pasados unos segundos el fichero de log de nuestra base de datos se haya reducido de forma considerable.

Reducción del archivo de log mediante comando

Si queremos hacer la reducción mediante comandos para por ejemplo crear un script que se encargue de reducir el fichero log de forma periódica y automática el comando a utilizar, indicando el nombre del fichero de log y el tamaño que tendrá el nuevo fichero, sería el siguiente :

DBCC SHRINKFILE (N'Nombre_archivo_log' , 50)
GO

Nota: para saber el nombre del archivo de log podremos consultarlo pulsando sobre el botón derecho-propiedades en la base de datos, página Archivos y ahí buscaremos la fila cuyo tipo de archivo sea Registro.

Truncar archivo de log

Por último voy a indicaros el comando a utilizar en el caso que no os baste con reducir y por algún motivo necesitéis truncar el archivo de log.

ALTER DATABASE nombre_base_de_datos SET RECOVERY simple
GO
DBCC SHRINKFILE (nombre_archivo_log, 1)
GO
ALTER DATABASE nombre_base_de_datos SET RECOVERY full

Nota: para saber el nombre del archivo de log seguir los mismos pasos indicados en el apartado anterior.

Como siempre espero os haya sido de utilidad.

Entradas relacionadas

19 comentarios en «Formas de reducir el archivo de log de una base de datos en SQL Server»

    • Hola Solivan,

      Pues seguramente no te funcionará la reducción del archivo de log y es posible te de algún un error.

      Saludos.

      Responder
    • Hola Richard,

      Es extraño que al truncar no te reduzca el log, ¿pusiste la base de datos en modo simple antes de lanzar el comando para truncar?.

      Saludos.

      Responder
  1. Para que se pueda reducir el Log:
    Debes conectarte a la BBDD como sa.
    No debe de haber transacciones pendientes.
    Desconectar a todos los usuarios y ejecutar la siguiente instrucción SQL:

    select name, log_reuse_wait_desc from sys.databases

    El campos log_reuse_wait_desc de la base de datos debe estar con el valor «NOTHING» para que se pueda ejecutar la reducción.

    Responder
  2. Buenas, a ver si me dan una mano, estoy en esta situación y quiero reducirlos archivo, he intentado varios metodos y nada.

    tempdb.mdf 315,200 Kb
    tempdb2.ndf 7,508,224 Kb
    tempdb3.ndf 7,407,552 Kb
    tempdb4.ndf 7,902,784 Kb
    tempdb5.ndf 8,078,656 Kb
    tempdb6.ndf 9,011,726 Kb
    tempdb.ldf 47,615 Kb

    Responder
    • Hola John,

      Pues precisamente la entrada que voy a publicar esta tarde explica la forma de reducir el tamaño de la base de datos Temp de SQL sin necesidad de parar el servicio de SQL Server, por lo que estate atento que posiblemente sea la solución a tu problema.

      Saludos.

      Responder
          • Hola buenas, recuerden como tenia mis temdb :

            tempdb.mdf 315,200 Kb
            tempdb2.ndf 7,508,224 Kb
            tempdb3.ndf 7,407,552 Kb
            tempdb4.ndf 7,902,784 Kb
            tempdb5.ndf 8,078,656 Kb
            tempdb6.ndf 9,011,726 Kb
            tempdb.ldf 47,615 Kb

            Ahora en la configuración de las mismas si vas a propiedades de los archivos, veras que por lo general la ultima columna contempla y porcentaje de auto crecimiento y eso me hizo entender el porque habian crecido a lo lardo de los años (+ o – 8 años).

            La solución fue simple, en esta misma parte ajuste el valor inicial en mega y lislo, antes tenia unos valores iniciales que ya no podia mantener pero ahora los reajuste y listo.

            JP.

            Responder
  3. Tengo una base de datos de producción y otra de prueba, quiero reducir los archivos .ldf que tienen diferentes nombre pero los archivos .mdf de cada base de datos es igual, aunque se guardan en diferentes carpetas. ¿Es posible que para truncar estos archivos, escriba la ruta completa del .mdf en el script DBCC SHRINKFILE (nombre_archivo_log, 1) ?. Espero haberme hecho entender. Muchas gracias.

    Responder
    • Hola Carlos,

      Pues sinceramente no se me ha dado nunca el caso por lo que no podría decirte.
      Si consigues solucionarlo te agradecería lo pusieras en un comentario por si en un futuro a alguien le surge el mismo problemas sepa como solucionarlo.

      Saludos.

      Responder
  4. Hola Sergio, la solución es muy sencilla. Ingresé a las propiedades de la base de datos, por la opción de archivos y cambié el nombre lógico de la base de datos y así puede ejecutar el script para reducir los archivos. Muchas gracias por su atención.

    Responder
  5. que tal buenas tardes

    igual tengo el problema del archivo log demasiado grande ya esta por llenarse el disco, ya trate de darle reducir pero me marca error que no se puede porque esta en replicacion, les agradeceria si alguien sabe como reducir en esta condicion

    saludos!

    Responder

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.