Repara Access
HomeRepara AccessEsta página

Cómo comprobar si una base de datos corrupta es irrecuperable

Mirar el contenido hexadecimal de un archivo de Microsoft Access

David Cimadevilla

22/4/2019

Un editor hexadecimal es la mejor forma de analizar el estado de un archivo dañado de Microsoft Access y de estimar las posibilidades de recuperar los datos.

En este artículo explico como identificar algunos tipos de daño mayor en archivos de Access. El objetivo es encontrar anomalías en el contenido binario del archivo.

Para ilustrar las explicaciones, usaré en adelante algunos de los archivos del proyecto “Cómo reparé 28 bases de datos dañadas”.

“Mirando” dentro del archivo

Cuando necesito reparar un archivo dañado de Access, lo primero que hago, antes que ninguna otra cosa, es comprobar si está completo. Un archivo que parece normal por su icono o su tamaño, podría estar completamente vacío de datos.

Icono de base de datos de Microsoft Access con su tamaño

El tamaño del archivo parece correcto pero...

Una buena forma de comprobar si un archivo de Access contiene realmente datos es "mirar" su contenido binario.

Suena complicado pero no lo es tanto. Se trata simplemente de visualizar los bytes que hay dentro para intentar detectar, a vista de pájaro, si el archivo tiene huecos vacíos en su interior.

El editor hexadecimal

Para visualizar el contenido "crudo" de un archivo se puede usar cualquier editor hexadecimal. En este articulo usaremos la utilidad gratuita HxD. Para seguir esta guía te recomiendo descargarla e instalarla.

El hexadecimal es una notación numérica muy usada en informática. Todos estamos acostumbrados a la notación decimal que usa 10 dígitos desde el 0 hasta el 9. El hexadecimal usa 16 dígitos, añadiendo 6 más después del 9, que se representan como letras desde la A a la F.

Si contamos en hexadecimal, tendremos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13, (...), 19, 1A, 1B, etc.

No es más que otra forma de expresar los mismos números.

Una vez instalada la herramienta, abrimos con ella el archivo accdb o mdb desde el menú File | Open.

Zonas en la ventana del editor hexadecimal HxD.

Así se ve con un visor hexadecimal el comienzo de un archivo de Access.

Podemos observar tres áreas diferenciadas:

  1. Área central

    Los bytes del archivo, cada uno expresado como 2 dígitos hexadecimales. Por ejemplo 00, 53, 6E o FF. Para nuestro propósito sólo necesitamos entender que cada par representa un byte.

  2. Área derecha

    Los mismos bytes pero ahora interpretados como letras (ASCII). Como no todos los bytes tienen una correspondencia en letra, muchos bytes aparecerán como puntos o caracteres "raros".

  3. Área izquierda

    La posición, contada en número de bytes desde el inicio del archivo.

Ahora, veamos como se ve un archivo no dañado de Access y luego algunos archivos dañados, en el editor hexadecimal:

Archivo de Access en editor hexadecimal

Usando la barra de desplazamiento para recorrer el archivo, vemos alternarse pequeñas zonas con datos, con otras que sólo contienen ceros (00). Esto es lo normal.

Si avanzamos a una velocidad uniforme encontramos datos a lo largo de todo el archivo:

Base de datos de Access en editor hexadecimal

Base de datos con la cabecera dañada

corrupt-header.accdb

Cualquier archivo de Microsoft Access, ya sea mdb o accdb, de versiones desde 2002 a 2019, debe comenzar con el texto Standard ACE DB y para versiones 2000 y anteriores Standard JET DB.

En este ejemplo, los primeros 4KB han resultado remplazados por datos aleatorios ajenos al archivo.

Compara las dos imágenes:

  1. Cabecera correcta

    La cabecera de un archivo accdb de Microsoft Access siempre incluye el texto __Standard ACE DB__.

    Un archivo sin daños de Microsoft Access debe incluir el texto Standard ACE DB en su quinto byte.

  2. Cabecera dañada

    Archivo dañado de Microsoft Access visto en editor hexadecimal

    Falta la marca inicial. Se han perdido los datos originales del archivo.

Archivo de Access sin datos reales

zero-overwrite-whole.accdb

Este otro archivo ha perdido los datos originales que han sido remplazados con ceros. A pesar de tener un tamaño normal, el archivo no contiene ninguna información. Este archivo es irrecuperable.

No sé cuáles son las causas de este problema pero me lo encuentro habitualmente en archivos de clientes. En base a mi experiencia, la mayoría de las veces se pierden los datos de la parte final del archivo. La extensión de la zona perdida varía entre un 10% y un 100%.

Archivo de Access sin datos reales

Pérdida parcial de datos

zero-overwrite-ending-400K.accdb

Similar al ejemplo anterior pero con una pérdida de datos parcial. Falta el 10% final del archivo accdb.

Observa como al final de archivo solo hay ceros:

Faltan datos al final del archivo

Conclusiones

El uso de un visor hexadecimal es una excelente herramienta diagnóstica para analizar archivos dañados de Microsoft Access y descartar problemas mayores en el archivo.

Si te asusta la palabra hexadecimal, puedes usar una herramienta de recuperación de datos para inspeccionar en la vista previa cuanta información es recuperable.

Puedes leer más sobre recuperación de datos de MS Access en nuestro blog Repara Access.