Introduction
An .mdb file is a database made by
Microsoft Access, the
desktop database in Microsoft Office. One file holds the tables and their data, and
usually also the queries, forms and reports built on them. The storage engine behind it
is called Jet.
Access 2007 introduced a newer version of the engine, ACE, and a new extension,
.accdb, which adds features such as multi-valued fields, attachments and
stronger encryption. Older Access versions cannot open .accdb files. The
formats are proprietary; what is known of the page layout comes from the open-source
MDB Tools and Jackcess projects.
Structure
The file is a series of fixed-size pages: 2,048 bytes in Jet 3 (Access 97) and 4,096
bytes in Jet 4 (Access 2000 to 2003) and ACE. The first page is the header. From byte 4
it holds the text Standard Jet DB in an .mdb file or
Standard ACE DB in an .accdb file, and a version number
follows. Much of the rest of the header is obscured with a fixed key.
Other pages hold table definitions, data rows, indexes and the map of which pages
belong to which table. A system table, MSysObjects, lists every table,
query, form and report in the file. While a database is open, Access keeps a lock file
beside it (.ldb or .laccdb).
Links
Software
- Microsoft Access (Windows)
- DBeaver (Windows, macOS, Linux)
Developers
- MDB Tools, C library and command-line tools for
.mdband.accdbfiles - Jackcess, Java
- UCanAccess, Java JDBC driver built on Jackcess
Reference
- MDB Tools HACKING notes, the reverse-engineered description of the file format