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 9:32 PM
[...] http://febrer.wordpress.com/2009/06/19/como-borrar-el-registro-de-transacciones-transaction-log-en-s... [...]
30 Julio 2009 a 7:19 PM
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 7:16 PM
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 7:34 PM
Borrar directamente? Como? con click derecho no hay menu, solo se (des)marca el checkbox. Gracias
7 Agosto 2009 a 7:16 AM
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 3:11 PM
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