Como borrar el registro de transacciones (Transaction Log) en SQL Server
El procedimiento ‘normal’ para realizar el borrado del registro de transacciones, sería el siguiente:
BACKUP LOG [MIBASEDEDATOS] WITH TRUNCATE_ONLY
DBCC SHRINKFILE(NOMBRE_LOGICO_LOG, 1)
En el caso de que sigamos obteniendo un error del tipo:
Msg 9002, Level 17, State 4, Line 1
The transaction log for database ‘MIBASEDEDATOS’ is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
Deberemos tomar una solución más drástica, como borrar físicamente el fichero LOG en el disco. Para ello, lo primero que tenemos que hacer es ‘detachear’ o ‘Separar’ la base de datos. El procedimiento es el siguiente:
1 – Forzamos la escritura de las páginas en memoria con CHECKPOINT (repetimos varias veces este comando).
2 – Separamos la base de datos con sp_detach_db
USE [master]
GO
EXEC master.dbo.sp_detach_db @dbname = N’MIBASEDEDATOS’
GO
3 – Borrado del fichero .LDF físico existente en nuestro disco duro. Normalmente, su ubicación es:
C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data\MIBASEDEDATOS.LDF (ojo, no MDF, mdf es la base de datos)
4 – Una vez eliminado el fichero .LDF, procederemos a realizar de nuevo el ‘attach’ o ‘Adjuntar’ la base de datos, de esta manera:
USE [master]
GO
CREATE DATABASE [MIBASEDEDATOS] ON
( FILENAME = N’C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data\MIBASEDEDATOS.MDF’ )
FOR ATTACH
GO
Sin indicarle el fichero LDF. Automáticamente SQL Server, genera un nuevo fichero LDF de transacciones.
Espero que este método pueda serte útil.
19 junio, 2009 a 21:32
[…] https://febrer.wordpress.com/2009/06/19/como-borrar-el-registro-de-transacciones-transaction-log-en-s… […]
30 julio, 2009 a 19:19
Hola, tu post esta muy explicativo, pero aun sigo con mi duda. Como puedo borrar los logs de sql server antes de una fecha dada? Por eplo, en SQl Management 2005, los logs se ven por
Current Fecha dd/mm/aa hh:mm:ss
Archivo #1 Fecha dd/mm/aa hh:mm:ss
como puedo eliminar el archivo # 1?
Gracias de antemano
6 agosto, 2009 a 19:16
Los ficheros de log que comentas, se pueden borrar directamente, no tienen nada que ver que el log de transacciones, son ficheros log que contienen información de sucesos de sql server. Saludos.
6 agosto, 2009 a 19:34
Borrar directamente? Como? con click derecho no hay menu, solo se (des)marca el checkbox. Gracias
7 agosto, 2009 a 07:16
Hola Merlin, los ficheros de log (no los de transacciones) se encuentran en C:\Archivos de programa\Microsoft SQL Server\(tu_instancia_sql)\MSSQL\Log, y son ficheros planos que se pueden borrar directamente. Pero reitero, no tiene nada que ver con el registro de transacciones. Saludos.
7 agosto, 2009 a 15:11
Hola, gracias por la respuesta pero me referia al borrado de los logs de las transacciones antes de una fecha dada, los cuales hacen que el fichero .ldf crezca muchisino. Saludos
20 noviembre, 2009 a 20:02
El procedimiento funciona cuando lo hago en SQLServer 2005.
En SQL Server 2000 da el error que no existe el registro de transacciones
14 marzo, 2010 a 13:46
mi base de datos tiene replicacion,si le borro el llog tendre problemas
26 abril, 2010 a 14:51
Consulta: mi log de transacciones ha crecido demasiado, y requiero borrarlo HAGO EL SHRINK Y NO ME RESULTA, he aplicado el Shrink a otras base de datos y me resulta, pero especificamente con 2 base de datos no me da nada. que hago
27 abril, 2010 a 12:24
El comando Shrink, debería funcionarte. Puede que el problema este en que la base de datos este en uso. Mira en el visor de eventos que puede estar pasando seguro que tienes información que te puede dar una pista de que esta pasando. Un saludo.
3 mayo, 2010 a 16:13
Hola Juan Carlos, muy bueno tu blog tengo una duda con tu primer script
BACKUP LOG [MIBASEDEDATOS] WITH TRUNCATE_ONLY
DBCC SHRINKFILE(NOMBRE_LOGICO_LOG, 1)
este funca para sql 2005 y 2008 y solo trunca el log ???
24 septiembre, 2010 a 05:54
Excelente post, fue la única manera, como pude limpiar el log de mi SQL Server 2008.
Gracias,
7 octubre, 2010 a 20:52
De verdad muy bueno ! coincido totalmente con Alvaro, solucioné el problema de limpiar el log en sql server 2005
Gracias!
18 enero, 2011 a 18:06
Hola, una pregunta que va en la setencia para borrar las transacciones en la parte de NOMBRE_LOGICO.
Muchas gracias
21 enero, 2011 a 01:42
Sin lugar a dudas el metodo de hacer un DETACH, me puede traer mas problemas que beneficios, me sigo quedando con el BACKUP WITH TRUNCATE_ONLY.
Ahora en 2008, con solo hacer BACKUP de la base, esta implicito el “limpiado” del log.
Saludos
Isaias Islas
MCP MCTS SQL Server 2008
21 enero, 2011 a 08:47
Muchas gracias por el aporte!!
17 abril, 2012 a 18:52
hola, yo tengo una tarea de mantenimiento en sql server 2008 para que me realice un backup diario de la BD, pero sin embargo no se me borra el log de transacciones
como haces para que sea borrado cuando haces el backu´p
18 abril, 2012 a 14:40
En SQL Server 2008 esta implicito el borrado del log al realizar una copia de seguridad. ¿¿Estas utilizando “BACKUP WITH TRUNCATE_ONLY”??
26 julio, 2011 a 16:10
que pasa con los logins?, al atachar una base de datos pierdo los logins
15 marzo, 2012 a 17:29
Excelente blog Lo utilce por que se me presento este problema de log lleno en SQL Server 2005 y me funciono a las mil maravillas, gracias muy buen blog felicidades febrer
7 enero, 2013 a 01:42
El log de un servidor World of Warcraft version 3.3.5a se puede borrar mediante estos pasos?
7 enero, 2013 a 10:38
Lo siento, este procedimiento es aplicable solamente a servidores SQL Server. Ignoro si el servidor de World of Warcracft, es SQL Server, pero me temo que no.
16 enero, 2013 a 18:43
Que tal amigo tengo un problema SQL server que mi archivo .ldf a crecido demaciado que esta apunto de llenar el disco duro y tengo muchas preguntas, Con tu metodo lo elimino y despues de vuelve a crear?, como respaldo las transacciones que tiene este .ldf son realmente necesarias? , para qué?, en que puede afectar si lo borro las transacciones?
1 abril, 2014 a 15:28
Muchas Gracias muy bien explicado y funciona, me salvo la vida
5 agosto, 2014 a 18:32
tengo una bd de contabilidad y el log esta llenando el hdd pero necesito borrar no todo sino de alguna fecha especifica