Repara Access
HomeRepara AccessEsta página

Cómo reparar usando “Compactar y reparar”

Compactar y reparar base de datos en Microsoft Access

David Cimadevilla

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 eliminar todos los errores.

Sin embargo, no siempre se completa la reparación sin complicaciones y nos encontramos con alguno de los 3 siguientes problemas:

  1. Un error nos impide siquiera empezar a reparar.

  2. En la base de datos reparada faltan algunos objetos: tablas, formularios, Visual Basic, etc. Se han desvanecido sin dejar rastro.

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

“Compactar y reparar” puede potencialmente destruir datos en archivos dañados.

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, si no tienes copia de seguridad, lo más probable es que 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:

Aviso de Microsoft Access: Todos, absolutamente todos, tus datos se destruirán definitivamente, irremisiblemente y para siempre. ¿Seguro, segurísimo, que quieres continuar?.

Advertencia ficticia que se echa en falta.

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

...sobre “Compactar y reparar”.
  1. 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.

  2. 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:

  1. Menú Herramientas de base de datos / Compactar y reparar base de datos:

  2. 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:

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

  2. Si por el contrario, ya tuvieras una base de datos abierta, ciérrala desde el menú Archivo.

  3. Ahora ya puedes iniciar Compactar y reparar base de datos desde el menú Herramientas.

  4. A continuación se abren dos cuadros de diálogo sucesivamente, el primero te pide la base de datos que quieres reparar.

  5. 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:

Error de Microsoft Access: No se reconoce el formato de base de datos

Error No se reconoce el formato de base de datos al usar “Compactar y reparar”.

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, 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”:

Error de Microsoft Access: '...' no es un índice en esta tabla

'...' no es un índice en esta tabla

Error de Microsoft Access: No se puede abrir o ejecutar la macro '...' porque no es válida

No se puede abrir o ejecutar la macro '...' porque no es válida

Error de Microsoft Access: Microsoft Access no encuentra el objeto '...'

Microsoft Access no encuentra el objeto '...'

Error de Microsoft Access: El nombre de módulo 'xxx' está mal escrito o se refiere a un módulo que no existe

El nombre de módulo 'xxx' está mal escrito o se refiere a un módulo que no existe

Error de Microsoft Access: El proyecto de Visual Basic para Aplicaciones de la base de datos está dañado

El proyecto de Visual Basic para Aplicaciones de la base de datos está dañado

Error de Microsoft Access: La base de datos no se puede abrir porque no se puede leer el proyecto VBA que contiene

La base de datos no se puede abrir porque no se puede leer el proyecto VBA que contiene

Como deshacerse de los errores

Si la base de datos sigue teniendo errores, una forma de eliminar los errores, 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.

Menú de Microsoft Access: Datos externos - Nuevo origen de datos - Desde una base de datos - Access

Importar todos los objetos para limpiar un archivo con errores.

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 de 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 ya has aplicado Compactar y reparar no habrá forma de recuperar los objetos desaparecidos dado que estos son descartados durante la operación.

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.

Compactar al cerrar

Opción de Microsoft Access: Opciones de Access - Base de datos actual - Compactar al cerrar

Opción de 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 Repara Access, y también en la serie de artículos Cómo reparé 28 bases de datos, donde se experimenta con 28 archivos dañados de Access con distintos tipos de fallo.