Cómo reparé 28 bases de datos dañadas de Microsoft Access
22/5/2019
Qué pasos seguí para reparar 28 archivos corruptos de Microsoft Access. Cómo identifiqué cada caso y elegí la técnica de reparación idónea a partir del mensaje de error y del análisis del archivo. Proyecto de investigación.
Parte de mi trabajo consiste en reparar archivos de Microsoft Access para mis clientes. A lo largo de los últimos 10 años he visto todo tipo de errores diferentes. En algunos casos el archivo de MS Access no se puede abrir, en otros, se generan mensajes de error que impiden el uso normal de la base de datos.
Cada error tiene su origen en una causa diferente, en un tipo de daño distinto. Haber desarrollado la herramienta de recuperación de datos AccessFIX me ha permitido aprender mucho sobre el funcionamiento interno de los archivos de Microsoft Access. Cuando lo necesito, no me resulta complicado analizar un archivo accdb o mdb dañado, encontrar la causa del error y repararlo.
Me he preguntado muchas veces durante mi trabajo qué pistas me podía estar dando un mensaje de error sobre el fallo concreto de un archivo y si eso podría serme útil para reparar posteriormente la base de datos dañada. Así se me ocurrio la idea de este proyecto.
Los resultados de esta serie de artículos pueden ser una fuente de información para aquellos que necesiten reparar una base de datos con errores.
El proyecto consistiría en analizar una serie de archivos accdb dañados de Access para relacionar cada mensaje de error con el tipo de daño y con el mejor método para reparar el archivo, a ser posible, sin usar herramientas externas.
Finalmente pude encontrar el tiempo para realizar este proyecto y he podido completarlo con un éxito razonable. En esta serie de artículos, voy a ir dando a conocer los resultados obtenidos.
Recopilando errores de Access
Mi primer objetivo era recopilar el máximo número de mensajes de error diferentes. Pensé que la única forma de estudiar un gran número de errores era analizar un gran número de archivos accdb y, por tanto, necesitaba tantos archivos dañados como fuera posible.
Teniendo en cuenta las implicaciones de privacidad que tendría trabajar con archivos reales, me decidí finalmente por generar artificialmente una serie de archivos dañados para el estudio.
Archivos accdb imposibles de abrir, datos inaccesibles, tablas desaparecidas, mensajes de error inesperados, son los síntomas de una base de datos dañada de Microsoft Access.
Generando errores
Partí de una base de datos totalmente funcional que contenía objetos de todos los tipos: tablas, consultas, formularios, informes, macros y módulos de Visual Basic:
A continuación, dupliqué 28 veces la base de datos original y en cada copia dañé una parte específica del archivo. En los primeros archivos machaqué grandes zonas del archivo para pasar después a dañar con precisión pequeñas zonas de entre 2 y 8 bytes. Por ejemplo corromper un bloque de registros de una tabla, una entrada en el índice de objetos o los datos asociados a un módulo de Visual Basic.
Tras dañar "quirúrgicamente" cada uno de los archivos, estos son los 28 archivos accdb resultantes:
zero-overwrite-beginning-400K | Datos iniciales borrados. |
zero-overwrite-ending-400K | Datos finales borrados. |
zero-overwrite-whole | Todos los datos borrados. |
empty.accdb | Archivo vacío. |
corrupt-header.accdb | Cabecera dañada. |
corrupt-index-def.accdb | Contenedor del índice dañado. |
corrupt-index | Índice completamente destruido. |
corrupt-index-page | Índice parcialmente dañado. |
corrupt-index-table | Tabla dañada en el índice. |
corrupt-index-form | Formulario dañado en el índice. |
corrupt-index-module | Módulo dañado en el índice. |
corrupt-objects-def.accdb | Contenedor de objetos dañado. |
corrupt-objects-page.accdb | Almacen de objetos dañado parcialmente. |
corrupt-objects-form-data.accdb | Datos de un formulario dañados. |
corrupt-objects-form-entry.accdb | Cabecera de un formulario dañado. |
corrupt-objects-vba-data.accdb | Datos de un módulo dañados. |
corrupt-objects-vba-entry.accdb | Cabecera de un módulo dañada. |
corrupt-system-complex-def.accdb | Contenedor de campos complejos dañado. |
corrupt-system-complex-page.accdb | Campos complejos parcialmente dañados. |
corrupt-system-permissions-def.accdb | Contenedor de permisos dañado. |
corrupt-system-permissions-page.accdb | Permisos parcialmente dañados. |
corrupt-system-queries-def.accdb | Contenedor de consultas dañado. |
corrupt-system-queries-page.accdb | Consultas parcialmente dañadas. |
corrupt-system-relationships-def.accdb | Contenedor de relaciones inter-tabla dañado. |
corrupt-system-relationships-page.accdb | Relaciones inter-tabla parcialmente dañadas. |
corrupt-customers-def.accdb | Daños en definición de una tabla. |
corrupt-customers-page.accdb | Daños en algunos registros de una tabla. |
corrupt-customers-memo.accdb | Daños en campo memo de una tabla. |
Los resultados
Por cada uno de los archivos dañados, comprobé metódicamente cómo fallaba Access y qué errores devolvía. Tomé notas y pantallazos de todo.
Por último clasifiqué los archivos según los mensajes de error que generaban. Pensé que sería el modo más útil de presentar los resultados ya que así se podría consultar la información disponible sobre cada error a modo de guía de referencia.
Para encontrar información sobre cómo reparar un archivo corrupto, busca el artículo monográfico sobre el error particular que te interesa.
A lo largo de los próximos meses iré preparando un artículo por error con información sobre cómo reparar cada uno de los archivos dependiendo del tipo de fallo.
Lo que haré para preparar cada artículo será, por cada uno de los archivos que presenten un mismo error, anotar cuándo y cómo se muestra el mensaje e intentar reparar el archivo, si fuera posible sin usar herramientas externas a Microsoft Access.
En cada artículo publicaré los resultados incluyendo los síntomas del fallo y la técnica de reparación empleada.
El mensaje de error, cuándo se produce y cómo ocurre pueden servir para identificar casos similares de corrupción. De esta manera, las técnicas aplicadas para reparar un archivo también podrían ser útiles en casos parecidos.
Por cada archivo que comparta el mismo error incluiré en los resultados la siguiente información:
- Cómo se manifiesta el error.
- Cómo se pueden identificar casos similares.
- Qué objetos se ven afectados.
- Cómo reparar el archivo o recuperar los datos.
Lista de errores
Error 2
Pronto disponible. Este error, a pesar de lo que sugiere el mensaje, podría estar anunciando un daño interno en el archivo accdb.
Próximos errores
Nuevos errores próximamente.
Sobre el autor
Mi nombre es David Cimadevilla. Desde 2006 he dirigido el desarrollo de la utilidad AccessFIX para la recuperación de datos de archivos de Microsoft Access.
Por mi disco duro han pasado cientos de archivos dañados con todo tipo de fallos y de todas las versiones de Access desde 97 hasta 2019. Cientos de horas en frente de la pantalla inspeccionándolos me han permitido descifrar cada detalle del fomato binario de Access.