Solución:
1. ¿Por qué el archivo de registro ocupa tanto espacio (30 GB)?
- O debido a que su recuperación no es SIMPLE y ldf creció eventualmente a tal tamaño
- O porque hubo una gran operación de DML única
- O por otras razones, como señaló @sepupic en otra respuesta
2.¿Cómo puedo liberar espacio?
-
SI la recuperación es diferente a SIMPLE:
- En primer lugar, copia de seguridad del archivo de registro de transacciones
- Realice un encogimiento, como
DBCC SHRINKFILE(2,256)
-
SI la recuperación es SIMPLE:
- Simplemente encogerlo al tamaño deseado, como
DBCC SHRINKFILE(2,256)
- Simplemente encogerlo al tamaño deseado, como
Si el registro de la base de datos aún no se redujo a un tamaño de destino, entonces la razón exacta para ser verificada, usando un fragmento de código de @sepupic
Algunos miembros siguen dando consejos para eliminar físicamente los archivos LDF.
Recomiendo encarecidamente no hacer esto. Mensaje relacionado notable de Aaron Bertrand:
Algunas cosas que no quieres hacer:
Separe la base de datos, elimine el archivo de registro y vuelva a adjuntar. No puedo enfatizar lo peligroso que puede ser esto. Es posible que su base de datos no se recupere, puede aparecer como sospechosa, es posible que deba volver a una copia de seguridad (si tiene una), etc., etc.
¿Por qué el archivo de registro de mi base de datos ocupa demasiado espacio?
Puede haber más causas, no solo las 2 mencionadas en otra respuesta.
Puede encontrar el motivo exacto utilizando esta consulta:
select log_reuse_wait_desc
from sys.databases
where name="myDB";
Aquí hay un enlace al artículo de BOL que describe todas las posibles causas en log_reuse_wait
: sys.databases (Transact-SQL)
¿Cómo puedo liberar espacio?
Primero debe determinar la causa utilizando la consulta anterior, luego debe solucionarlo, por ejemplo, si está roto replication
deberías eliminarlo o arreglarlo.
1. Why is the log file taking this much space (30gb)?
Fue porque el Autogrowth / Maxsize
se estableció 200,000 MB
2. how can I free up the space?
Como se describe aquí, utilicé el siguiente comando y el archivo ahora es menor que 200mb
ALTER DATABASE myDatabaseName
SET RECOVERY SIMPLE
GO
DBCC SHRINKFILE (myDatabaseName_log, 1)
GO
ALTER DATABASE myDatabaseName_log
SET RECOVERY FULL
Yo tambien he puesto Autogrowh/Maxsize
en las propiedades de la base de datos para 1000
como Limited
(Vea la imagen a continuación).