ACCDB Crash Help
HomeACCDB Crash HelpCómo reparé 28 bases de datos dañadas de Microsoft Access

Cómo reparé 28 bases de datos dañadas de Microsoft Access

Base de datos dañada de Microsoft Access

David Cimadevilla

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

Cuando una base de datos de MS Access se corrompe ¿Cuántos mensajes de errror diferentes se pueden ver?

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

Dañar con precisión estructuras internas seleccionadas en archivos accdb me permitió obtener distintos tipos de error.

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:

Base de datos de Microsoft Access

Base de datos original antes de dañarse.

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.

28 archivos dañados de Microsoft Access

28 copias de la misma base de datos son la materia prima de este proyecto. En cada archivo se han dañado estructuras internas cuidadosamente seleccionadas.

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

Un artículo monográfico por cada error diferente.

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

Haz clic en un error para consultarlo.

Error 2

"El motor de base de datos de Microsoft Access detuvo el proceso porque otro usuario está intentando modificar los mismos datos al mismo tiempo"
Error de Microsoft Access: El motor de base de datos de Microsoft Access detuvo el proceso porque otro usuario está intentando modificar los mismos datos al mismo tiempo

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.