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.

Anuncios

25 comentarios to “Como borrar el registro de transacciones (Transaction Log) en SQL Server”

  1. 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

    • 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.

  2. Borrar directamente? Como? con click derecho no hay menu, solo se (des)marca el checkbox. Gracias

    • 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.

  3. 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

  4. Alejandro Rayson Says:

    El procedimiento funciona cuando lo hago en SQLServer 2005.
    En SQL Server 2000 da el error que no existe el registro de transacciones

  5. gerard Says:

    mi base de datos tiene replicacion,si le borro el llog tendre problemas

  6. victor Says:

    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

    • 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.

  7. Felipe Lisboa Says:

    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 ???

  8. Excelente post, fue la única manera, como pude limpiar el log de mi SQL Server 2008.
    Gracias,

  9. Cristina Says:

    De verdad muy bueno ! coincido totalmente con Alvaro, solucioné el problema de limpiar el log en sql server 2005
    Gracias!

  10. Liliana Says:

    Hola, una pregunta que va en la setencia para borrar las transacciones en la parte de NOMBRE_LOGICO.
    Muchas gracias

  11. Isaias Says:

    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

    • Muchas gracias por el aporte!!

    • 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

      • En SQL Server 2008 esta implicito el borrado del log al realizar una copia de seguridad. ¿¿Estas utilizando “BACKUP WITH TRUNCATE_ONLY”??

  12. informatiko Says:

    que pasa con los logins?, al atachar una base de datos pierdo los logins

  13. 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

  14. El log de un servidor World of Warcraft version 3.3.5a se puede borrar mediante estos pasos?

    • 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.

  15. Carlos Says:

    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?

  16. Enrique Marchan Says:

    Muchas Gracias muy bien explicado y funciona, me salvo la vida

  17. danyer Says:

    tengo una bd de contabilidad y el log esta llenando el hdd pero necesito borrar no todo sino de alguna fecha especifica

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: