Fernanda, parte de este equipo, nos ha hecho el favor de redactar esta crónica porque controla muy bien este tema.
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 DML única
- O por otras razones, como lo señala @sepupic en otra respuesta
2.¿Cómo puedo liberar el espacio?
-
SI la recuperación no es SIMPLE:
- En primer lugar, haga una copia de seguridad del archivo de registro de transacciones
- Realizar un encogimiento, como
DBCC SHRINKFILE(2,256)
-
SI la recuperación es SIMPLE:
- Simplemente redúzcalo al tamaño deseado, como
DBCC SHRINKFILE(2,256)
- Simplemente redúzcalo al tamaño deseado, como
Si el registro de la base de datos aún no se redujo a un tamaño objetivo, entonces la razón exacta para verificar, utilizando un fragmento de código de @sepupic
Algunos miembros todavía dan consejos para eliminar físicamente los archivos LDF.
Recomiendo encarecidamente no hacer esto. Notable publicación relacionada de Aaron Bertrand:
Algunas cosas que no quieres hacer:
Separe la base de datos, elimine el archivo de registro y vuelva a adjuntarla. No puedo enfatizar lo peligroso que esto puede ser. Es posible que su base de datos no vuelva a funcionar, que aparezca como sospechosa, que tenga que volver a una copia de seguridad (si tiene una), etc., etc.
¿Por qué el archivo de registro de mi base de datos ocupa mucho espacio?
Puede haber más causas, no solo las 2 mencionadas en otra respuesta.
Puede encontrar la razón exacta usando 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 bajo log_reuse_wait
: sys.bases de datos (Transact-SQL)
¿Cómo puedo liberar el espacio?
Primero debe determinar la causa utilizando la consulta anterior, luego debe solucionarlo, por ejemplo, si está roto replication
deberías quitarlo 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 también he puesto Autogrowh/Maxsize
en las propiedades de la base de datos para 1000
como Limited
(Ver la imagen de abajo).