Cómo reparar usando “Compactar y reparar” en MS Access
29/5/2019
Cómo usar correctamente “Compactar y reparar” con un archivo corrupto de Microsoft Access y qué hacer si no se consiguen eliminar todos los errores.
Cuando una base de datos de Access está fallando, Microsoft recomienda aplicar Compactar y reparar para corregir todos los errores.
Sin embargo, no siempre se completa la reparación sin complicaciones, pudiéndonos encontrar con alguno de los 3 siguientes problemas:
Un error nos impide siquiera empezar a reparar.
En la base de datos reparada faltan algunos objetos: tablas, formularios, Visual Basic, etc. Se han desvanecido sin dejar rastro.
La base de datos reparada sigue generando errores.
Hablaré sobre ello a lo largo de este artículo.
Por otro lado, en lo directamente relacionado con el inicio y uso de Compactar y reparar base de datos, trataré también un par de detalles que creo que necesitan ser aclarados.
Atención, herramienta peligrosa
Cuando aplicas Compactar y reparar sobre un archivo dañado puede ocurrir que, una vez completada la operación, hayan desaparecido algunos objetos, tablas o registros, especialmente aquellos que estaban fallando o produciendo errores. Desgraciadamente, sin una copia de seguridad, lo más probable es que estos objetos se hayan perdido definitivamente.
Sería deseable, en mi opinión, que Access mostrara una advertencia antes de aplicar cambios destructivos e irreversibles sobre una base de datos:
Pero lo que realmente ocurre es que Compactar y reparar procede silenciosamente con la regeneración del archivo descartando todo lo que se le atasque, tan silenciosamente que uno puede dudar si ya ha hecho clic en el botón de compactar o no.
Si te ha pasado esto, que tus objetos o tablas han desaparecido tras aplicar la herramienta, es posible que sigan estando ahí pero no se vean aunque lo más corriente es que se pierdan.
En definitiva, haz siempre una copia de seguridad antes de usar Compactar y reparar base de datos.
Dos datos útiles
Se puede iniciar desde dos sitios diferentes del interfaz de Access: desde el menú Herramientas de base de datos, y desde el menú Archivo | Información.
Se puede iniciar de dos modos: con la base de datos abierta y cerrada.
Reparar una base de datos abierta
Yo prefiero usar esta herramienta de la otra forma, es decir, con la base de datos cerrada, para no modificar el archivo original y así evitar posibles pérdidas de datos.
Si por alguna razón prefieres compactar sin cerrar la base de datos, es aconsejable hacer antes una copia de seguridad.
Una vez iniciado, Compactar y reparar se aplicará inmediatamente sobre la base de datos actualmente abierta. No verás ningún aviso cuando se complete la operación. Sin más noticia, estarás ya editando la nueva base de datos reparada.
Puedes iniciar la herramienta desde estos dos sitios:
Menú Herramientas de base de datos | Compactar y reparar base de datos:
Menú Archivo | Información:
Reparar una base de datos cerrada
El funcionamiento en este modo es sutilmente distinto y en mi opinión, preferible.
Cuando se usa Compactar y reparar de esta manera, Access respeta la base de datos original y la deja intacta. El resultado de la reparación se guarda en una base de datos nueva.
Veamos como se hace:
Si has abierto Access desde el menú Inicio de Windows, te aparece la pantalla inicial de Access. Pulsa la tecla <Esc> para salir de esta pantalla y acceder a los menús.
Si por el contrario, ya tuvieras una base de datos abierta, ciérrala desde el menú Archivo.
Ahora ya puedes iniciar Compactar y reparar base de datos desde el menú Herramientas.
A continuación se abren dos cuadros de diálogo sucesivamente, el primero te pide la base de datos que quieres reparar.
El segundo cuadro de diálogo te pide el nombre del archivo donde se guardará la nueva base de datos reparada. Si te sale un error aquí, lee la siguiente sección.
Error durante Compactar y reparar
En algunos casos, al intentar reparar la base de datos, un error detiene el proceso:
Este error indica que hay daños en la estructura principal de la base de datos hasta tal punto que Access no es capaz de hacer absolutamente nada con el archivo, ni siquiera abrirlo para repararlo.
Puedes leer más sobre este error concreto en el artículo monográfico sobre error No se reconoce el formato de base de datos, parte del proyecto Cómo reparé 28 bases de datos dañadas, en el que experimento con distintos archivos dañados de Access.
Errores en el archivo reparado
Basándome en las pruebas hechas con diferentes archivos, parece que el alcance de Compactar y reparar está limitado a sólo algunos tipos de fallo.
Puede ocurrir que los objetos problemáticos acaben tal cuál, con el mismo problema, en la base de datos "reparada". En otras ocasiones se solucionan algunos errores pero aparecen otros nuevos. Y también hay casos en los que algunos objetos se vuelven inaccesibles y Access ignora silenciosamente cualquier intento de abrirlos.
Como ejemplo, incluyo aquí algunos de los errores reales que me he encontrado en bases de datos presuntamente reparadas, tras aplicar la herramienta “Compactar y reparar”:
Como librarse de los errores
Si la base de datos sigue teniendo errores, una forma de eliminarlos que da muy buenos resultados es usar la técnica de importar todos los objetos desde una base de datos nueva. Se puede intentar el procedimiento tanto antes como después de usar Compactar y reparar para ver qué nos da mejores resultados.
Durante la importación de los objetos es normal que fallen algunos de ellos por estar dañados. Estos se perderán y no estarán en la base de datos final. En todo caso, el archivo resultante estará en general en buen estado exceptuando aquellos errores relativos a vínculos rotos como, por ejemplo, la ausencia de la tabla requerida por un formulario.
Cuando Compactar y reparar + Importación a base de datos nueva no den los resultados esperados, prueba una herramienta de recuperación de datos. La ventaja es que es más sencillo y se recuperan más datos, incluso en los archivos en peor estado.
Faltan objetos el el archivo reparado
Durante el proceso de compactar y reparar, Access puede descartar tablas, formularios y otros objetos que estén dañados o en un estado inconsistente. Estos objetos no se añadirán al archivo reparado.
También puede desaparecer cualquier objeto defectuoso, borrado o que, por alguna razón, no esté en el índice interno de la base de datos. Se pueden perder tablas, registros, formularios, informes, macros y código Visual Basic, tanto de módulos como de formularios o informes.
Si tienes una copia de seguridad hecha antes de compactar, recupera tu archivo con una herramienta de recuperación de datos capaz de recuperar objetos huérfanos. Te será útil como herramienta diagnóstica, ya que podrás usar la vista previa para descubrir objetos huérfanos y borrados que no son visibles de ninguna otra manera.
Si ya has aplicado Compactar y reparar no habrá forma de recuperar los objetos desaparecidos dado que estos son descartados durante la operación.
Compactar al cerrar
Esta opción se configura independientemente por cada base de datos y por defecto está deshabilitada.
Cuando se activa, se ejecuta la compactación automáticamente cada vez que se cierra la base de datos.
Recomiendo dejarla desactivada, ya que es una operación mayor que debería supervisarse. Y sobre todo, porque hacerlo manualmente nos permite hacer una copia de seguridad antes.
Recursos adicionales
Puedes encontrar información adicional en nuestro blog ACCDB Crash Help, y también en la serie de artículos Cómo reparé 28 bases de datos dañadas, donde se experimenta con 28 archivos dañados de Access con distintos tipos de fallo.