ACCDB Crash Help
HomeACCDB Crash HelpEsta página

Cómo recuperar tablas de MS Access que han perdido su definición

David Cimadevilla

30/5/2019

Cuando una base de datos de Microsoft Access se corrompe y una de sus tablas pierde la definición, se perderán también todos sus registros. El único camino para recuperarlos pasará por crear una definición nueva o importar una compatible desde otra base de datos.

Cuando un archivo .accdb o .mdb se corrompe se vuelve difícil o imposible seguir trabajando con él. Los síntomas de que está dañado son variados, tales como objetos inaccesibles o desaparecidos, mensajes de error e incluso bases de datos que ni siquiera se pueden abrir.

Dependiendo del caso podremos solucionar el problema, usando Compactar y reparar, una herramienta de recuperación o con otros métodos como importar todo en una base de datos nueva.

Sin embargo, si el problema se debe a que se ha perdido la definición de una tabla, las opciones se reducen drásticamente.

La definición es la estructura de datos que contiene todas los detalles que se editan desde la vista diseño de una tabla.

Cada tabla posee una definición con toda la información sobre sus campos con su nombre, tipo y atributos, y sus índices.

La pérdida de la definición de tablas también puede suponer un obstáculo en archivos de Access muy dañados, como por ejemplo archivos truncados, que requerirán de una utilidad de recuperación de datos. La mayoría de las herramientas no serán capaces de recuperar ninguna información de aquellas tablas que hayan perdido su definición.

Cómo reconocer una tabla con la definición dañada

Una tabla se vuelve imposible de abrir cuando pierde su definición. Si intentamos abrirla o acceder a la Vista diseño de la tabla, Access devolverá este error:

Error de _Microsoft Access_: No se reconoce el formato de base de datos

Este mensaje de error no significa necesariamente que se haya perdido la definición de la tabla. Pero sí es cierto a la inversa: si perdemos la definición de la tabla veremos este error."

En el caso de archivos que no se puedan abrir y necesiten de una herramienta de recuperación de datos, reconoceremos este fallo porque, con la mayoría de las utilidades, la tabla aparecerá vacía o no aparecerá en los resultados.

Cómo es el error internamente

Voy a explicar someramente como se almacenan internamente las tablas y cuál es el problema en este tipo de casos.

Una tabla se guarda repartida en tres zonas diferenciadas del archivo accdb o mdb:

  1. Nombre. Se guarda dentro del índice de objetos, separado del resto de datos de la tabla.

  2. Definición. La definición contiene todos los detalles sobre la tabla y se corresponde con los datos que se editan cuando se abre la vista Diseño de tabla desde Access. Contiene los campos de la tabla con sus nombres y sus tipos. También guarda información sobre los índices de la tabla.

  3. Registros. Se almacenan a lo largo de todo el archivo de base de datos. Si se destruye una parte del archivo accdb o mdb, se perderán sólo los registros que estuvieran en esa parte pero el resto seguirán estando disponibles.

Si se daña el índice de objetos, podremos recuperar una tabla sin nombre.

Si se dañan algunos registros, podremos recuperar el resto de ellos.

Sin embargo, si se pierde la definición, perderemos por completo la tabla, aunque todos los datos de los registros sigan estando "ahí". Esto es así, porque para poder interpretar cualquier fila de una tabla, se necesita obligatoriamente la definición para decodificar el bloque de datos del registro.

Actualmente, la única forma que conozco de recuperar estos datos es la herramienta AccessFIX con la que se pueden recuperar todos los registros de la tabla, parcial o totalmente. Más adelante hablaré de ello en detalle.

¿Y si reparamos con Compactar y reparar?

No lo hagas. Si no tienes copia de seguridad perderías definitivamente las tablas afectadas. Compactar y reparar base de datos "resuelve" el problema eliminando por completo este tipo de tablas... sin previo aviso.

Hagamos una prueba con un archivo que tiene dañada la definición de la tabla Customers. Fíjate en las pantallas que siguen y como la tabla desaparece después de aplicar Compactar y reparar.

Para hacer las pruebas he usado el archivo corrupt-customers-def.accdb del proyecto Cómo reparé 28 bases de datos dañadas.

  1. Antes

    La definición de la tabla Customers está dañada. Si intentamos abrir la tabla, se muestra el error.

  2. Después

    Después de aplicar Compactar y reparar la tabla Customers no solo desaparece sino que además todos sus datos son definitivamente eliminados del archivo.

Recuperamos con AccessFIX

Vamos a recuperar el mismo archivo del ejemplo anterior con AccessFIX. Fíjate en los pantallazos a continuación.

  1. Así era la tabla antes de dañarse

    La tabla Customers se veía así en Access.

  2. Ahora ni siquiera se puede abrir

    Tras el fallo, cualquier intento de acceder a la tabla provoca el error.

  3. Recuperamos con AccessFIX

    Se recupera la tabla con sus 29 registros, pero nos muestra un triángulo de advertencia en la tabla para indicar que hay un problema.

    AccessFIX es capaz de generar una nueva definición aunque con limitaciones: 1. Los nombres de campo originales se pierden. 2. Sólo se recuperan los campos de texto.

    En la siguiente sección explico una posible solución a esto.

Mejoramos la recuperación

Se puede mejorar mucho el resultado si disponemos de una copia obsoleta de la base de datos. No importa que no tenga registros, o que sea de hace años, mientras contenga una definición idéntica de la misma tabla.

AccessFIX tiene una opción para usar la definición de un archivo externo. El número de registros recuperados será el mismo, pero con todos sus detalles.

Veamos como sería el proceso:

  1. Seleccionamos el archivo externo

    Desde AccessFIX, activamos la recuperación Avanzada y, seleccionamos el archivo dañado. Después, en la opción Sustitución de estructura, seleccionamos la copia antigua. La copia nos aportará la definición que nos falta.

  2. Recuperación mejorada

    Las cosas han mejorado mucho ahora. Ya no aparece el símbolo amarillo de advertencia, se recuperan los nombres de campo, y se recuperan todos los campos, incluidos los que no son de texto, como el campo ID.

  3. La tabla recuperada en Access

    Una vez guardado el archivo desde AccessFIX, tenemos la tabla recuperada al completo.

Conclusiones

La corrupción de un archivo Microsoft Access puede generar múltiples fallos en la base de datos. Uno de los más graves ocurre cuando algunas de las tablas pierden la definición. Cuando una tabla pierde su definición se vuelve muy complicado recuperar los datos de sus registros.

La herramienta AccessFIX permite en estos casos recuperar directamente los campos de texto de todos los registros con las opciones por defecto. Adicionalmente, podremos recuperar por completo estas tablas si disponemos de una copia antigua de la base de datos, incluso si está vacía, aplicando la función Sustitución de estructura de AccessFIX durante la recuperación.

Más información útil sobre recuperación de datos de Access en nuestro blog ACCDB Crash Help.

Este sitio web utiliza cookies para gestionar sesiones, formularios, estadísticas y otros. Más información.