Limpiar y Reducir el Log de Transacciones SQL Server

Script de Ejemplo que permite limpiar y reducir el log de transacciones de una base de datos, no es posible limpiar el log sin realizar primero un backup del log, realizaremos nuestro ejemplo con una base de datos a la que llamaremos PrimaveraNew
–Para Limpiar el Log de Transacciones es necesario realizar un Backup del Log
Backup log PrimaveraNeW
to disk  =‘C:\test\BackupLog.bak’
–Una vez hecho el backup consultamos el nombre lógico de los archivos del log
sp_helpdb PrimaveraNeW
 
 Resultado:
 
— Antes de truncar el log cambiamos el modelo de recuperación a SIMPLE.
ALTER DATABASE PrimaveraNeW
SET RECOVERY SIMPLE;
GO
–Reducimos el log de transacciones a  1 MB.
DBCC SHRINKFILE(PrimaveraNeW_Log, 1);
GO
— Cambiamos nuevamente el modelo de recuperación a Completo.
ALTER DATABASE PrimaveraNeW
SET RECOVERY FULL;
GO

 

20 comentarios en «Limpiar y Reducir el Log de Transacciones SQL Server»

  • el 2017-04-13 a las 20:16
    Enlace permanente

    Probé lo que me sugirió y funcionó sin problemas, me ha quitado un gran peso, muchísimas gracias…

    Respuesta
      • el 2019-04-22 a las 20:43
        Enlace permanente

        USE tubasedatos
        DECLARE @TableName varchar(255)
        DECLARE TableCursor CURSOR FOR
        SELECT table_name FROM information_schema.tables
        WHERE table_type = ‘BASE TABLE’ and table_schema=’dbo’
        OPEN TableCursor
        FETCH NEXT FROM TableCursor INTO @TableName
        WHILE @@FETCH_STATUS = 0
        BEGIN
        EXEC (‘ALTER INDEX ALL ON [‘ + @TableName +
        ‘] REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,

        STATISTICS_NORECOMPUTE = ON)’)
        FETCH NEXT FROM TableCursor INTO @TableName
        END
        CLOSE TableCursor
        DEALLOCATE TableCursor

        Respuesta
  • el 2018-10-07 a las 16:56
    Enlace permanente

    Si quiero volver a corre el script como hago porque al volverlo hacer me sale error «BACKUP LOG porque no hay una copia de seguridad de la base de datos actual»

    Respuesta
    • el 2018-10-08 a las 17:18
      Enlace permanente

      Es un poco vago el mensaje, y no se que estas haciendo luego de sacar el primer backup del log, entonces tengo que especular un poco, pero este error no es por el script del backup del log, este mensaje esta diciendo que debes hacer un backup completo primero.

      Respuesta
  • el 2019-04-16 a las 14:46
    Enlace permanente

    Buenos dias, si uso la siguiente sentencia, me funciona igual:

    DBCC SQLPERF ( LOGSPACE )

    BACKUP LOG
    DBName
    WITH TRUNCATE_ONLY
    DBCC SHRINKDATABASE(‘DBName’,truncateonly)

    Respuesta
  • el 2019-05-16 a las 19:18
    Enlace permanente

    Hola, al hacer un respaldo full , y luego seguir con los pasos de reduccion, tambien ser{ia efectivo ??? , siempre haciendo esto en modo single user para evitar que realicen transacciones durante el proceso . Agardecere tu feeddback
    Saludos exlenmte aporte

    Respuesta
  • el 2019-05-27 a las 20:27
    Enlace permanente

    Excelente, ya habia intentando con otros script sin resultados, con tu script funciono. gracias por compartir tus conocimientos.

    Respuesta
  • el 2019-09-19 a las 17:05
    Enlace permanente

    Muchísimas gracias, seguí al pie de la letra y funciono a la perfección

    Respuesta
  • el 2019-10-28 a las 13:36
    Enlace permanente

    Se supone que el SHRINKFILE es para reducir espacio del disco donde se encuentra mi archivo ,como vas a recomendar sacar un backup ,por otro lado no existe la necesidad de alterar la Base de Datos.

    Respuesta
    • el 2019-10-28 a las 13:57
      Enlace permanente

      ¡Claro que lo recomiendo! En el SQL Server la única forma de limpiar el log de transacciones y este quede vacío es haciendo un backup del log, una vez esta limpio el log, el SQL Server no devuelve inmediatamente el espacio del disco al sistema operativo por lo que uso SHRINKFILE para reducir el tamaño del archivo.

      Respuesta
  • el 2019-12-16 a las 21:12
    Enlace permanente

    hay algun problema si el archivo mdf y el ldf tienen el mismo nombre?

    Respuesta
    • el 2019-12-17 a las 01:01
      Enlace permanente

      No, no hay problema, pero la intención es que sea fácil identificar cual es el log y los archivos de base de datos.

      Respuesta

Deja una respuesta

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

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