Algunas veces las bases de datos se hacen demasiado grandes y se "comen" todo el disco duro disponible, pero es fácil liberar espacio sin perder información de la Base de Datos.
Las
bases de datos de SQL Server disponen de dos tipos de archivos: el de datos
.mdf y el de transacciones .ldf
El método más fácil y sencillo que he
encontrado para liberar espacio en disco utilizando SQL SERVER consiste en
reducir el tamaño del archivo .ldf de algunas bases de datos que se hace
demasiado grande y se “come” literalmente todo el disco duro disponible, pera
dejar el .ldf en un pequeño porcentaje de lo que es, basta con ejecutar:
DBCC
SHRINKDATABASE (dbNombre_BBDD, 10);
GO
Donde el 10 indica que el archivo .ldf se quedará en un 10%
de lo que era inicialemtente, si tenía 10 Gb se quedará en 1 Gb, si ponemos 1
en vez de 10 lo dejaremos en un 1% de lo que era (100 Mb según el ejemplo).
El problerma de este método es que lo dicho arriba (la
teoría) no es cierto, en algunas bases de datos la reducción es sustancial pero
en otras apenas reduce un pequeño porcentaje.
A
través de las opciones Separar-Adjuntar (Atach-Detach)
Otro
método es utilizando la opción Separar-Adjuntar (Atach-Detach si la versión está
en Inglés)
¡Ojo! Antes de nada hacer una copia de seguridad de
la base de datos.
Como apunta Belzaleel en los comentarios, conviene antes de empezar cambiar el modo de recuperación de Completo a Simple. Para ello posicionados sobre la base de datos, pulsamos botón derecho del ratón -> propiedades.
Y en la pestaña Opciones, sobre el combo modelo de recuperación elegimos simple.
Hecho esto, sobre la base de datos saturada, pulsamos botón derecho del ratón -> tareas -> poner fuera de conexión (Detach).
Hecho esto, sobre la base de datos saturada, pulsamos botón derecho del ratón -> tareas -> poner fuera de conexión (Detach).
Esto
deja la base de datos fuera del administrador, antes de integrarla de nuevo,
tenemos que ir al equipo donde está alojada físicamente y eliminar
físicamente el archivo .ldf
Hecho
esto podemos integrar de nuevo la base de datos pero eliminando el archivo .ldf.
Para ello, sobre
Databases, botón derecho del ratón -> Tareas -> poner en conexión (o Attach) y elegir sólo el fichero .mdf no el
.ldf esto debería dejar a cero el
archivo .log
Y restauramos eliminando previamente el archivo .ldf para que se restauren sólo los datos y no el log.
Esto dejará de nuevo la Base de datos disponible pero con el fichero .ldf vacío, en algunos casos esto libera muchos gigas ocupados de forma innecesaria.
Finalmente siguiendo el orden inverso a cómo se explicó más arriba, ponemos el modo de recuperación de la base de datos de Simple otra vez a Completo.
Postgrado en SQL Server 2012. Experto en Creación y Administración Profesional de Base de Datos
Aqui estas arriesgando que tu BD no levante y pierdas la información, yo aconsejo que cambies el modo de recuperación de tu BD de full a simple y de simple a full y posteriormente reducir el Log, que quedara de 1MB.
ResponderEliminarGracias por tu aportación. Por eso digo que conviene antes de nada hacer una copia de seguridad, por si se pierde.
ResponderEliminar