How I repaired 28 corrupt Microsoft Access databases
Jul 19, 2019
The steps I took to repair 28 corrupt Microsoft Access files. How I identified each case and chose the appropriate repair technique by analyzing the file and looking at the error message. Research project.
As part of my job I have to repair Microsoft Access files for my clients. Over the last 10 years I have seen many different errors. In some cases, the MS Access file cannot be opened, in others the error messages prevent the normal use of the database.
Developping the AccessFIX data recovery tool has given me the opportunity to learn in depth about the internal workings of Microsoft Access files. When I need to, it is not difficult for me to analyze a damaged accdb or mdb file, find the cause of the error and to repair it.
Each error has its origin in a different cause, in a different type of damage. I have asked myself many times during my work what clues could be giving me an error message about the concrete failure behind it and if that knowledge could be useful to repair damaged databases. That's how I came up with the idea for this project.
The results of this series of articles is a source of information for those who need to repair a database with errors.
The project consists of analyzing a series of corrupted Access accdb files to relate each error message to a particular type of damage, and to find the best method to fix it. Whenever possible, the file should be repaired without using external tools.
I finally found the time to do this project and have been able to complete it. In this series of articles, I present the results I obtained.
Compiling Access Errors
My first goal was to collect the maximum number of different error messages. I thought that the only way to study a large number of errors was to analyze a large number of accdb files and, therefore, I needed as many damaged files as possible.
Considering the privacy implications of working with real files, I finally decided to artificially generate a series of damaged files for the study.
accdb files impossible to open, inaccessible data, missing tables, unexpected error messages, are the symptoms of a corrupt Microsoft Access database.
Generating errors
I started from a fully functional database that contained objects of all types: tables, queries, forms, reports, macros, and Visual Basic modules:
I then duplicated the original database 28 times and in each copy I damaged a specific part of the file. In the first files I cracked large areas of the file, then I precisely damaged small zones of between 2 and 8 bytes. For example, corrupting a block of records in a table, an entry in the database's index of objects, or some data associated with a Visual Basic module.
After "surgically" damaging each of the files, these are the resulting 28 accdb files:
zero-overwrite-beginning-400K | Beginning data erased. |
zero-overwrite-ending-400K | Ending data erased. |
zero-overwrite-whole | All data erased. |
empty.accdb | Empty file. |
corrupt-header.accdb | Corrupt header. |
corrupt-index-def.accdb | Corrupt index of objects. |
corrupt-index | Completely destroyed index of objects. |
corrupt-index-page | Partially damaged index. |
corrupt-index-table | Corrupt table entry in index. |
corrupt-index-form | Corrupt form entry in index. |
corrupt-index-module | Damaged module entry in index. |
corrupt-objects-def.accdb | Corrupt object storage. |
corrupt-objects-page.accdb | Partially damaged object storage. |
corrupt-objects-form-data.accdb | Corrupt form data. |
corrupt-objects-form-entry.accdb | Corrupt form header. |
corrupt-objects-vba-data.accdb | Corrupt module data. |
corrupt-objects-vba-entry.accdb | Corrupt module header. |
corrupt-system-complex-def.accdb | Corrupt complex fields container. |
corrupt-system-complex-page.accdb | Partially damaged complex fields. |
corrupt-system-permissions-def.accdb | Corrupt permissions container. |
corrupt-system-permissions-page.accdb | Partially damaged permissions. |
corrupt-system-queries-def.accdb | Corrupt query container. |
corrupt-system-queries-page.accdb | Partially damaged queries. |
corrupt-system-relationships-def.accdb | Corrupt inter-table relationship container. |
corrupt-system-relationships-page.accdb | Partially damaged inter-table relationships. |
corrupt-customers-def.accdb | Corrupt table definition. |
corrupt-customers-page.accdb | Corrupt table records. |
corrupt-customers-memo.accdb | Corrupt memo field. |
The results
For each of the damaged files, I methodically checked how Access failed and what errors it returned. I took notes and screenshots of everything.
Finally, I classified the files according to the error messages they generated. I thought it would be the most useful way to present the results as it would make it possible to check the information available about each error as a reference guide.
To find information on how to repair a corrupt file look for the monograph on the particular error you are interested in.
Over the next few months I will be presenting an article for each error with information on how to repair each of the files depending on the type of failure.
What I will do to prepare each article is, for each of the files with the same error, first, to write down when and how the message is displayed and then try to repair the file, if possible without, using other external tools.
In each article I will publish the results including the symptoms of the problem and the repair technique used.
The error message, when it occurs, and how it occurs, can be used to identify similar cases of corruption. This way, the techniques applied to repair a file could also be useful in similar cases.
For each file sharing a common error, I will include the following information:
- How the error is manifested.
- How similar cases can be identified.
- Which objects are affected.
- How to repair the file or recover the data.
List of Errors
Error 2
Coming soon. This error, in spite of what the message suggests, could be announcing internal damage in the accdb file.
Next Errors
New errors soon.