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
Probé lo que me sugirió y funcionó sin problemas, me ha quitado un gran peso, muchísimas gracias…
Literal 😛
¡Súper!
Seguí los pasos y sin un solo problema.
¡Gracias!
chevere mano funciono
Gracias,,,si funciona, pero si quiero reindexar la bd como le ago
podrías hacerlo con un plan de mantenimiento que se ejecute durante la noche
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
Excelente, bien explicado
maestro !!!
Excelente!!!
Excelente, aplicable cuando no tienes espacio en el servidor ocupado por el archivo ldf
simplemente excelente
Excelente tuto men!!!
Funciona a la Perfeccion.. Muchas Gracias..!!
Mil gracias!!
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»
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.
El aporte fue genial, muchas gracias
Excelente aportación, me funciono muy bien. Saludos.
Por lo que entiendo solo se esta respaldando y reduciendo el archivo de log pero no se esta limpiando o vaciando. Que script debo ejecutar para limpiar el archivo.
Buenos dias, si uso la siguiente sentencia, me funciona igual:
DBCC SQLPERF ( LOGSPACE )
BACKUP LOG
DBName
WITH TRUNCATE_ONLY
DBCC SHRINKDATABASE(‘DBName’,truncateonly)
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
Excelente, ya habia intentando con otros script sin resultados, con tu script funciono. gracias por compartir tus conocimientos.
fay
Buenos dias, Excelente me funciono perfecto.
Muchísimas gracias, seguí al pie de la letra y funciono a la perfección
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.
¡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.
hay algun problema si el archivo mdf y el ldf tienen el mismo nombre?
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.