CMS modules by everest poker.

Compactar y reparar

Imprimir
Valoración del Usuario:  / 9
MaloBueno 
Categoría: Teórico-práctico
Escrito por Neckkito

 

Si queréis bajaros el artículo en pdf pulsad aquí

 

Índice de contenidoCompactar y reparar


COMPACTAR NUESTRA BASE DE DATOS, O DE CÓMO DAMOS UNA RESPUESTA A LA GRAN PREGUNTA DE CARÁCTER EXISTENCIAL: “¿ES MI BASE DE DATOS UN CUBO DE BASURA?”
¿POR QUÉ PADECE MI BD DE OBESIDAD?
COMPACTAR Y COMPACTAR Y COMPACTAR
Compactación manual
Compactación automática al cerrar la BD
Compactación de una BD cerrada
Compactación a través de acceso directo
Compactación a través de código
PERO ANTES DE COMPACTAR DEBEMOS SABER…
REFLEXIÓN FINAL: ¡NUESTRA BD HA ADELGAZADO!
CHAPUZAS, S.A. ¿NECESITA REPARAR ALGUNA COSA?
REPARANDO… ¿FUNCIONARÁ?
Y, REPARADA, A PAGAR LA MINUTA

 

COMPACTAR NUESTRA BASE DE DATOS
O DE CÓMO DAMOS UNA RESPUESTA A LA GRAN PREGUNTA DE CARÁCTER EXISTENCIAL: “¿ES MI BASE DE DATOS UN CUBO DE BASURA?”
Tengamos presente, antes de empezar, la siguiente idea en la mente: mi BD, sumando estructura más datos, no puede ser mayor de 2 Gigas. Por suerte eso parece mucho, ¿verdad?
Creamos nuestra BD en blanco. Alegres y felices empezamos a crear tablas, formularios, informes, consultas. Borramos por aquí, añadimos por allá… Empezamos a meter algunos datos con el único propósito de comprobar que todo funciona bien. Ahora viene la fase de borrar registros, añadir nuevos, volver a borrar… Testeamos y contentos (o, en ocasiones, no tanto) vemos que nuestra BD funciona a las mil maravillas. Bueno, pues ya tenemos nuestra BD lista para funcionar. ¡Aleluya!


Y siguiendo felices queremos pasar nuestra BD por e-mail a un amigo para que nos felicite por nuestro gran trabajo… hasta que el correo no se nos envía debido al tamaño del archivo adjunto. Miramos extrañados el tamaño de nuestra BD y, por cuatro tablas, tres formularios, dos consultas y dos informes nuestra BD tiene nada más y nada menos un tamaño de, digamos, 30 megas… ¡y eso sin meter aún ningún dato!


Además de comprimir el archivo en zip o rar (lo que nos deja un asombroso tamaño de unos 100 K, por ejemplo), ¿qué podemos hacer? Porque, a este ritmo, nuestros preciosos 2 Gigas nos van a durar un suspiro…


La respuesta está en la palabra mágica “compactar”.


¿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.


¿El remedio para “adelgazar” nuestra BD? Como ya apuntábamos en el epígrafe anterior, debemos compactar.


COMPACTAR Y COMPACTAR Y COMPACTAR
La compactación es un proceso que va íntimamente ligado a la reparación. En este artículo sólo nos centraremos en la compactación. Sin embargo, es necesario saber que, en ocasiones, hablar de la una es como hablar de la otra.


También, como información adicional, no debemos confundir compactación con compresión. La compactación elimina objetos temporales y espacios vacíos en disco de nuestra BD, pero no comprime, a la manera de un zip o un rar, los datos ni la aplicación. Para que nos entendamos, por poner un símil, si nuestra base de datos fuera un globo hinchado la compactación deshincharía el globo, para, al final,  quedarnos con una especie de “pellejo”, que es globo en sí. La compresión cogería ese “pellejo” y lo doblaría una y otra vez hasta dejar un cuadradito de goma.


Vamos a ver varios sistemas para compactar nuestra BD, empezando por el más “normal” y acabando por otros sistemas más sofisticados.


Compactación manual
Access 2007: podemos realizar una compactación manual simplemente pulsando sobre el botón de Office y yendo a la opción “Administrar”. Ahí podremos seleccionar la opción “Compactar y reparar”. En la barra de estado, abajo a la derecha, podremos ver el progreso de la compactación.


Access 2010: nos vamos a menú Archivo -> Información -> Compactar y reparar.


Access 2003: nos vamos a menú Herramientas -> Utilidades de la base de datos -> Compactar y reparar base de datos…


Compactación automática al cerrar la BD
Podemos programar nuestra BD para que, cada vez que la cerremos, se produzca el proceso de compactación. Para ello deberemos realizar lo siguiente:


Access 2007: pulsamos el botón de Office y clickamos sobre el botón “Opciones de Access”. Nos vamos a la opción “Base de datos actual” y, dentro del apartado “Opciones de la aplicación”, veremos un check que nos indica “Compactar al cerrar”. Si lo marcamos nuestra BD se compactará cada vez que cerremos la misma.


Access 2010: nos vamos a menú Archivo y seleccionamos “Opciones”. Nos vamos a la opción “Base de datos actual” y a partir de aquí el proceso es el mismo explicado para la versión 2007.


Access 2003: debemos irnos a Menú Herramientas ? Opciones ? Pestaña General, y marcar la opción correspondiente.


Compactación de una BD cerrada
Podemos, a través de Access, compactar otra base de datos que no esté abierta en ese momento. Para conseguir eso debemos hacer lo siguiente:


Access 2007:
1.- Abrimos un Access (no una BD).
2.- Clickamos sobre el botón de Office.
3.- Seleccionamos Administrar->Compactar y reparar base de datos
4.- En la ventana que se nos abre navegamos por nuestro sistema de archivos hasta seleccionar la BD que queremos compactar.
5.- Cuando encontremos nuestro “objetivo” hacemos doble click sobre él.
6.- Nos pedirá a continuación cómo queremos guardar la base de datos compactada. Así, podremos reemplazar la BD existente (guardándola con el mismo nombre) o, si nos interesa, guardándola con otro nombre de archivo.


Access 2010: el proceso comienza igual que en el punto 1 de Access 2007, exceptuando que la opción para compactar y reparar debemos buscarla en el menú Herramientas de base de datos->Compactar y reparar, y a partir de aquí seguir los pasos 4 y siguientes del punto anterior.


Access 2003: el proceso comienza igual que en el punto 1 de Access 2007, pero la opción está en menú Herramientas->Utilidades de la base de datos->Compactar y reparar base de datos. A partir de aquí hay que seguir los pasos 4 y siguientes.


Compactación a través de acceso directo
Podemos crear un acceso directo que, al hacer doble click, nos compacte una BD determinada. Veamos cómo se hace:


1.- Debemos comprobar antes dónde tenemos el archivo msaccess.exe. Por norma general se encuentra en la siguiente ruta:
C:\Archivos de programa\MicrosoftOffice\Office12\msaccess.exe
2.- Debemos saber la ruta de la BD que queremos compactar. Para nuestro ejemplo la ruta será:
C:\BDs\Base.accdb
3.- Nos situamos, por ejemplo, en el escritorio y hacemos click con el botón de la derecha. Seleccionamos la opción Nuevo->Acceso directo
4.- Se nos abrirá el asistente. En la primera pantalla se nos solicita la ubicación del archivo. Nosotros ahí deberemos escribir, como idea en abstracto (e incluyendo las comillas): “Ruta de msAccess.exe” “Ruta de mi BD” /compact
Para nuestro ejemplo nos debería quedar algo así:
“C:\Archivos de programa\MicrosoftOffice\Office12\msaccess.exe” “C:\BDs\Base.accdb” /compact


Compactación a través de código
Podemos también añadir un botón de comando a alguno de nuestros formularios y y, en el mismo momento de salir, aprovechar para compactar la base de datos. Para ello tenemos que hacer lo siguiente:


1.- Creamos un botón de comando, de título “Salir”.
2.- Sacamos sus propiedades y nos vamos a la pestaña Otras->Nombre, y escribimos cmdQuit
3.- Ahora nos vamos a la pestaña eventos, y al evento “Al hacer click” le asignamos el siguiente código:

 

---
Private Sub cmdQuit_Click()
    Application.SetOption "Auto Compact", True
    DoCmd.Quit
End Sub
---


Y ahora, cuando le demos al botón salir, el código le dirá a Access que compacte y salga.


PERO ANTES DE COMPACTAR DEBEMOS SABER…
El proceso de compactación requiere de una condición sine qua non para poderse ejecutar correctamente: debemos tener acceso exclusivo a la base de datos.


¿Qué significa eso exactamente? Pues simplemente significa que sólo nosotros, y nadie más, debe estar trabajando en la base de datos en el momento de la compactación. Si hay algún otro usuario utilizando nuestra base de datos, en el mejor de los casos, nos aparecerá un mensaje del tenor: “No es posible compactar o reparar ahora”, y en el peor de los casos podemos dañar alguno de los datos con que el usuario “extraño” esté trabajando en ese momento.


Por otra parte también debemos saber que si realizamos el proceso de compactación para “ahorrar” espacio en principio no debemos preocuparnos demasiado: realizamos el proceso y ya está. Sin embargo, si debemos recurrir a la compactación porque la BD nos ha dado algún “problema” (y recordemos, como decíamos al principio, que los conceptos compactar y reparar van íntimamente ligados) es altamente recomendable guardar una copia de seguridad antes de realizar el proceso, a fin de que si, contrariamente a lo que pensábamos, el “problema” es un “problemón” y Access intenta, además de compactar, reparar nuestra BD, con toda probabilidad, para realizar este proceso de reparación, Access elimine registros dañados o truncados, con lo que podríamos perder información concerniente a nuestros registros.


REFLEXIÓN FINAL: ¡NUESTRA BD HA ADELGAZADO!
Tras lo que hemos explicado podemos constatar la importancia de compactar nuestra BD. Sin embargo espero que me permitáis exponer un par de recomendaciones finales en función a las “experiencias vividas”. Evidentemente, soy recomendaciones de carácter personal y no se basan en ninguna teoría que podáis encontrar en libros o manuales.


Si nuestra BD es relativamente “pequeña” y sólo la utilizamos nosotros no tiene mayor importancia configurar nuestra BD para que se compacte al salir. Prácticamente no notaremos la realización del proceso.


Si nuestra BD es más “grande” pero sólo la utilizamos nosotros estamos más o menos en la situación del punto anterior. Quizá tengamos que esperar “un poco” antes de que nuestra BD se cierre definitivamente, pero, en principio, no hay mayor inconveniente.


Si nuestra BD es utilizada por otros usuarios al mismo tiempo, lo que representa tener la BD en red, y, tenemos creado un Back-end y un Front-End, tampoco tenemos problema, porque lo que se compactará serán los Front-End individuales de cada PC. Nuestro trabajo como administrador será ocuparnos de compactar el Back-End periódicamente.


Si nuestra BD está en red y es utilizada por otros usuarios al mismo tiempo, y no utilizamos el sistema Back-end / Front-End, no recomiendo en absoluto compactar automáticamente al salir, porque lo más seguro es que el proceso nos dé problemas (a nosotros o a los usuarios conectados). Debemos recordar que la compactación requiere tener acceso a la BD en modo exclusivo. Solución: o bien quedarnos en la oficina hasta que estemos seguros de que todos se han ido o bien pedir a los usuarios que salgan de la BD el tiempo que se realiza la compactación.


Y básicamente esto es lo más importante (creo) que os puedo comentar sobre el tema de compactación.


CHAPUZAS, S.A. ¿NECESITA REPARAR ALGUNA COSA?
Compactar y reparar van íntimamente ligados. De hecho, cuando Access realiza uno también realiza el otro.


Sin embargo, he creído interesante separar ambos elementos en epígrafes diferentes, a efectos pedagógicos, para que quede muy claro que son dos procesos distintos “en uno”.


Las opciones para realizar una reparación, ya sea manual, a distancia o a través de acceso directo son las mismas que apuntábamos en apartados anteriores, y a ellos os remito.


Sólo vamos a apuntar un par de curiosidades sobre la reparación, para ampliar nuestros “vastos” conocimientos sobre Access.


REPARANDO… ¿FUNCIONARÁ?
Cuando se produce algún error durante el proceso de introducción de datos Access marca ese registro como dañado (o truncado). Este riesgo aumenta relativamente si la BD se está compartiendo a través de la red (sobre todo con modificaciones de los campos tipo memo).


También puede producirse un problema por culpa de un módulo de VBA. En este caso la integridad de nuestros datos no peligra, pero como contrapartida sí puede afectar a nuestro diseño de la BD, y podemos encontrarnos con que los formularios no funcionen, o que incluso perdamos código VB que hubiéramos escrito.


No hay por que ser catastrofistas: en el primero de los casos lo más probable es que, si perdemos datos, sean los últimos registros introducidos.


Si notamos alguna “cosa rara” en nuestra base de datos siempre podemos recurrir a la compactación y reparación manual, pero, ¿qué pasa si no nos damos cuenta? Pues cuando intentemos abrir de nuevo la BD Access nos pedirá si queremos reparar la base datos, pues parece que está dañada. Ahora nos podemos encontrar ante dos posibilidades:


Primera, que Access logre reparar completamente la BD, en cuyo caso nos lanzará un mensaje diciendo que la reparación se ha realizado correctamente.


Segunda, que Access no pueda reparar la totalidad de la BD. Así, Access hará un informe de lo que no se ha podido reparar y nos dirá qué ha ido mal. Si tenemos copia de seguridad podremos recuperar esa información del backup. ¿Y cómo hace eso? Pues Access registra los errores en una tabla de sistema denominada MSysCompactErrors y nos la abre en vista hoja de datos.


Nota: si tenemos curiosidad por ver las tablas de sistema (¡mirar pero no tocar, puesto que si manipulamos esas tablas de sistema que nos aparecen podría ser que la BD no nos respondiera bien, o que directamente no nos funcionara!) hacemos click con el botón derecho del ratón sobre cualquier espacio en blanco del panel de exploración y seleccionamos la opción “Opciones de exploración…”. Si en la pantalla que nos aparece marcamos el check “Mostrar objetos del sistema” veremos todas los objetos que Access crea “por detrás” para una correcta gestión de nuestra base de datos.


Y, REPARADA, A PAGAR LA MINUTA
Y poca cosa más podemos añadir al tema de la reparación. Creo que nos han salido unos epígrafes “breves pero intensos”. Espero que, tras leerlo, podamos entender un poquito mejor los “mensajes de amor” que nos lanza nuestro Access.


¡Suerte!

 

Thursday the 30th. Joomla 2.5 Templates. Neckkito's baby 2012 --- Hosted by: www.siliconproject.com.ar
Copyright 2012

©