Access sin tablas locales crece. ¿Por qué?

Tengo una aplicación en access 2010, se compone de dos bases de datos, en una de ellas están físicamente las tablas (BBDD TABLAS) y en la otra (BBDD GESTIÓN) los formularios, informes, módulos y código vba...

... Y las tablas vinculadas a la otra base de datos.

Toda la manipulación de los datos se realiza a través de la bbdd gestión por formularios, simultáneamente acceden un máximo de 20 usuarios.

El caso es que de entrada la BBDD GESTIÓN ocupa solamente 3 MB. Pasadas un par de semanas de uso ya pesa 20MB. Si compacto vuelvo a los 3MB originales.

La pregunta es: ¿Por qué pasa esto? La BBDD GESTIÓN no tiene ninguna tabla en "local".. Incluso revisando las tablas de sistema ninguna de ellas justifica el incremento de tamaño.. ¿Por qué crece el archivo si no almacena nuevos datos?

1 respuesta

Respuesta
2

Te respondo citando el artículo de Neckkito en su web:

"¿POR QUÉ PADECE MI BD DE OBESIDAD?

Una base de datos, lógicamente, debe aumentar de tamaño si nosotros añadimos objetos, códigos y también si vamos introduciendo datos en nuestros registros. Sin embargo, y de esto nosotros no nos percatamos, la base de datos aumenta también de tamaño básicamente por dos motivos:

Por los objetos temporales que Access crea de manera oculta, que en ocasiones quedan “ahí” aunque nuestra BD ya no los necesite.

Por los espacios en disco que quedan cuando eliminamos un objeto, porque, aunque el objeto ya no esté, el espacio que ocupaba sigue quedando “ocupado” para la BD hasta que no se dé cuenta de que ya “no hay nada allí”.

Todo lo anterior hace que nuestra BD aumente de tamaño “de manera artificial”. Y no sólo eso, sino que además puede hacer que el rendimiento de nuestra BD decrezca, tardando más en realizar las operaciones que programamos en nuestra aplicación."

Lo que puedes hacer es programar una compactación automática al cerrar tu BD. En el enlace al artículo tienes explicados distintos métodos para hacerlo.

Saludos!


Gracias por la respuesta!

Compactar la BBDD es la solución, no hay duda ni tampoco es problema cómo programarlo, pero la duda no queda resuelta del todo.

¿Qué objetos temporales creados de manera oculta quedan "ahí"? 

Entiendo que las variables, recordsets e instancias de formularios e informes se almacenan en ram, no en el archivo... o no es así? Qué objetos quedan?

En cuanto a "los espacios en disco que quedan cuando eliminamos un objeto" entiendo que pueden ser registros en tablas de sistema eliminados... porque he revisado las tablas de sistema y no justifican por sí solas el aumento de tamaño... a no ser que se creen registros en esas tablas y se eliminen, ocupando de ese modo espacio y haciendo crecer la BBDD. Es correcto?

No soy informático, y desconozco el funcionamiento interno completo de Access, por lo que no te sabría responder a qué objetos ocultos son los que crean y por qué se mantiene aunque se eliminen...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas