Generalmente el tamaño de nuestra base de datos va aumentando conforme se utilice, y no necesariamente por que se le agreguen nuevos datos, sino por consultas, transacciones, errores, índices, etc. Por este motivo tenemos que estar regularmente brindandole mantenimiento a nuestras bases de datos.
Como primer paso vamos a consultar el tamaño actual de la base de datos, para que, posteriormente podamos comparar el resultado luego de las instrucciones que vamos a realizar. Entonces ejecutaremor desde el SQL Query Analyzer el siguiente comando DBCC UPDATEUSAGE(0).
El DBCC UPDATEUSAGE(0) restablece la generación de informes de uso, de manera que sp_spaceused pueda informar correctamente acerca del tamaño de la base de datos, el espacio sin asignar, el tamaño de los datos, el tamaño del índice y el espacio sin usar. Normalmente, debe realizar esta operación sólo después de reconstruir los índices. (Tenga en cuenta que si no ejecuta DBCC UPDATEUSAGE(0) después de reconstruir los índices, sp_spaceused informará acerca de los números que existían antes de reconstruir los índices.)
Código que se debe de ejecutar en el SQL Query Analyzer:
Luego desde el Query vamos a ejecutar sp_spaceused que nos mostrará el tamaño actual de la base de datos, el espacio sin asignar, el tamaño de los datos, el tamaño del índice y el espacio sin usar.
Código que se debe de ejecutar en el SQL Query Analyzer:
Guarda esta información para que luego de las operaciones de mantenimiento puedas comparar y comprobar que realmente el tamaño de la base de datos ha sido reducido.
Para reducir el tamaño del fichero físico debemos utilizar una opción del menú del SQL Enterprise Manager, seleccionamos con el boton derecho del mouse la base de datos y optamos por "all tasks" (todas las tareas) luego "Shrink Database"
En esa acción se nos abre un cuadro de diálogo donde seleccionamos la opción "Move pages to beginning of file befote shrinking" pulsamos OK y esto reducirá el tamaño del fichero fisico.
Una vez realizado este proceso es recomendable utilizar las siguientes instrucciones en el Query Analyzer para borrar el log y reducir su tamaño.
DBCC SHRINKDATABASE ( base_de_datos , TRUNCATEONLY )
Luego de haber realizado estas acciones podemos volver a ejecutar los comandos mostrados arriba DBCC UPDATEUSAGE(0) y sp_spaceused en el Query para comparar el tamaño actual de la base de datos con el tamaño que tenía antes de las acciones de mantenimiento.
Importante es tener siempre respaldos de nuestra base de datos por cualquier inconveniente que se nos pueda prensentar, mas aún tener un respaldo actualizado antes de realizar cualquier operación de mantenimiento.
Ahora el siguiente paso luego de realizar la reducción del log de nuestra base de datos, se recomienda reconstruir los índices para mejorar el rendimiento de la base de datos. Aquí les dejo el link del artículo donde se explica como hacerlo. Como reconstruir los índices en nuestra base de datos SQL Server
Estimado, tengo una base de 180 GB con un 30% de espacio libre… mi disco duro se ha llenado, y tengo otra base en ese disco duro que es del aplicativo que usamos en nuestra empresa.
Le mande a correr el Shrinkdatabase a la base, pero se ha demorado ya casi 2 dias y que ademas el log transaccional se me estaba llenando y con esto el disco duro de los logs transaccionales
como puedo hacer para que el tiempo sea menos?
el comando que estoy usando es netamente:
USE [reportes]
GO
DBCC SHRINKDATABASE(N’reportes’, 24 )
GO
debo usar algo mas?
Muchas gracias de antemano
Hola Geovanny, cada caso se debe analizar de forma distinta, supongo que tienes los logs separados en otro disco de donde tienes los data.
180GB no es tanto como para que dure tanto tiempo, deberia de ser un proceso bastante rapido, si gustas me contactas al corrreo [email protected] para ayudarte mejor