AccScan
技術

.accdbと.mdbの違い|Accessのファイル形式と変換手順

.mdb(Access 2003以前・JET 3.5/4.0)と.accdb(Access 2007以降・ACE)の機能差を表で比較。複数値フィールド・添付ファイル型はaccdbのみ、ユーザーレベルセキュリティ・レプリケーションはmdbのみ。Access 97 mdbを現行Accessで直接.accdbに変換できない理由と中間手順、逆変換の制約も解説します。

まずは、自社のAccessが「解析できるか」を無料で確認できます。

約2分・ファイル送信不要・発注義務なし

.accdbと.mdbの違い:先に結論から

.mdbはAccess 2003以前が使っていたファイル形式(JETエンジン)、.accdbはAccess 2007以降の形式(ACEエンジン)です。最大の実務上の違いは後方互換性で、.accdbはAccess 2007より前のバージョンでは開くことも、リンクテーブルとして参照することもできませんMicrosoft Support: Which Access file format should I use?)。2GBのファイルサイズ上限と255ユーザー同時接続の上限はどちらの形式も同じです。

機能面では.accdbのほうが多く、複数値フィールド・添付ファイル型・計算フィールド(Access 2010以降)はaccdbでしか使えません。一方、.mdbにあったユーザーレベルセキュリティとデータベースレプリケーションはaccdbでは廃止されています。

変換は.mdbから.accdbへは「名前を付けて保存」で可能ですが、Access 97形式(JET 3.5)のmdbはAccess 2013以降では直接.accdbに変換できず、一度Access 2000〜2003形式(JET 4.0)のmdbに変換する中間手順が必要です(Microsoft Support: Convert a database to the .accdb file format)。

形式の歴史:JETとACEの関係

.mdbはJETエンジン(Joint Engine Technology)が扱うファイル形式です。Access 2000以降のmdbはJET 4.0系を使っており、Access 97のmdbはその一世代前のJET 3.5です。.mdbには「Access 2000形式」と「Access 2002〜2003形式」という別々のファイル形式が存在します(どちらもJET 4.0系ですが同一形式ではなく、Access 2013以降の「名前を付けて保存」でも両形式は別々に選択肢に表示されます。Microsoft Support: Convert an .accdb database to an earlier file format)。Access 97のmdbはJET 3.5形式で、Access 2013以降では直接.accdbへ変換できません。

Access 2007でエンジンがACE(Access Connectivity Engine)に変わり、それに合わせてファイル形式も.accdbに切り替わりました。MicrosoftはACEを「the Office database engine that's built from the foundation of Jet(JETの基盤の上に構築されたOfficeのデータベースエンジン)」と説明しており、完全な別物ではありません(Microsoft Learn)。エンジンの詳細な変遷についてはAccessのJET/ACEエンジンとはで別途解説しています。

「.mdb = 古い、.accdb = 新しい」とよく言われますが、.mdbの中にも世代があります。Access 97のmdbとAccess 2003のmdbは同じ拡張子でもエンジンのバージョンが異なり、振る舞いも別物です。

.accdbと.mdbの機能差一覧

Microsoft Supportの公式ドキュメントをもとに主要な差異をまとめます(出典: Which Access file format should I use?)。

機能・仕様.mdb(JET 4.0、Access 2000〜2003形式).accdb(ACE、Access 2007〜)
ファイルサイズ上限2GB(システムオブジェクト除く)2GB(変わらず)
同時利用ユーザー上限255255(変わらず)
複数値フィールド(多値フィールド)非対応対応
添付ファイル型非対応対応
計算フィールド型非対応対応(Access 2010以降)
長いテキストの変更履歴(AppendOnly)非対応対応
データベース暗号化独自方式Windows Crypto API使用(より強固)
ユーザーレベルセキュリティ対応非対応(廃止)
データベースレプリケーション対応非対応(廃止)
Access 2003以前での使用Access 2000形式はAccess 2000以降、Access 2002〜2003形式はAccess 2002以降で使用可。Access 97では使用不可不可(リンクも含めて不可)

ユーザーレベルセキュリティはMicrosoftが「old-fashioned and easily compromised(時代遅れで容易に突破される)」と評しており、セキュリティ目的での継続使用は推奨されていません。.accdbではユーザーレベルセキュリティ(ユーザーごとのオブジェクト操作権限管理)は廃止されています。ファイル暗号化については、.accdbはWindows Crypto APIを使った方式を採用しており、.mdbの独自暗号化方式より強固です。

形式変換の手順と注意点

.mdbを.accdbに変換する手順はシンプルです。Access 2007以降で対象の.mdbファイルを開き、「ファイル」→「名前を付けて保存」→「Access データベース(.accdb)」を選んで保存するだけです。元の.mdbファイルは残ります(Microsoft Support: Convert a database to the .accdb file format)。

ただし、Access 97形式のmdbは例外です。Access 2013以降では「名前を付けて保存」の選択肢にAccess 97形式の.mdbが直接変換できません。この場合は次の中間手順が必要です。

  1. Access 2003(または相当バージョン)でAccess 97のmdbを開き、「ツール」→「データベースユーティリティ」→「データベースの変換」→「Access 2002〜2003 ファイル形式」で一度JET 4.0形式のmdbに変換する
  2. 変換後のmdb(JET 4.0)をAccess 2007以降で開き、「名前を付けて保存」から.accdbに変換する

Access 2007または2010を使える環境があれば、それらでAccess 97のmdbを開くと「データベース拡張ウィザード」が起動して.accdbへの変換を案内してくれます。Access 2013以降ではAccess 97形式から直接.accdbへ変換できないため、中間バージョンのAccessが必要です。

.accdbを.mdbに戻す場合の制約

逆方向の変換(.accdbから.mdbへ)も可能ですが、.accdb固有の機能を使っていると変換できません。具体的には次のものが含まれると変換がブロックされます(Microsoft Support: Convert an .accdb database to an earlier file format)。

  • 複数値を許可するルックアップフィールド(Allow Multiple Values = Yes)
  • 添付ファイル型フィールド
  • 計算フィールド型
  • 変更履歴を追跡している長いテキスト(Memo)フィールド
  • 他の.accdbファイルやSharePointリスト、.xlsx形式のExcelへのリンクテーブル
  • パスワードによるデータベース暗号化(変換前にパスワードを削除する必要があります)

変換先として選べるのはAccess 2000形式またはAccess 2002〜2003形式(いずれもmdb)です。Access 97形式へのダウングレードはさらに手間がかかります。まず現行のAccessでAccess 2000またはAccess 2002〜2003形式へ変換し、その後Access 2003などの旧バージョンでAccess 97形式へ変換する必要があり、現行のAccessだけでは完結しません(Microsoft Support: Convert an .accdb database to an earlier file format)。

「.accdbに変換したら古い環境で開けなくなった」という問い合わせは実務でよくあります。変換前に利用者の環境(Accessのバージョン)を確認しておくことが重要です。ファイル形式の違いに起因するエラーの診断については「データベースの形式を認識できません」エラーの原因と復旧手順も参考にしてください。

どちらの形式を選ぶべきか

Access 2007以降しか使わない環境なら.accdbを選ぶのが妥当です。複数値フィールドや添付ファイル型など新機能への対応、暗号化の堅牢性(Windows Crypto API)など、.accdbのほうが実質的にメリットが多い。なお、64bit版のOfficeや64bitアプリから.mdbに接続する場合もACEドライバーを経由するため、ここでの形式差はありません。64bit Windowsでも32bitアプリなら32bit版のJET OLE DBドライバーを引き続き使えます(Microsoft Learn: Jet ODBC driver available in 32-bit version only)。

.mdbを維持する理由があるとしたら、次のどれかに当てはまる場合です。Access 2003以前の環境と同じファイルを共有する必要がある、データベースレプリケーションを使っている、またはユーザーレベルセキュリティの運用をまだ変えられない。いずれも2025年11月時点では珍しいケースですが、古くから使い続けているシステムでは残っていることがあります。

古い環境が混在したままAccessの移行を検討している場合は、現状のファイル形式・Accessバージョン・接続方式を確認する必要があります。無料の解析可否チェックで現在の環境が移行の対象になるかどうかを確認できます。

よくある質問

Q. .mdbをそのまま使い続けて問題ありますか。

使い続けること自体は可能です。現行のAccess(Microsoft 365版・Access 2024)はJET 4.0形式の.mdbをそのまま開けます。ただし.accdb固有の機能(添付ファイル型、計算フィールド、複数値フィールド)は使えません。また、.mdbファイルに接続するための旧来のJET OLE DBプロバイダー(Microsoft.Jet.OLEDB.4.0)は32bit版のみで、64bit版のOfficeやアプリから.mdbに接続する場合はACEドライバー経由になります。

Q. Access 97のmdbを今のAccessで変換できますか。

Access 97形式(JET 3.5)のmdbは、Access 2013以降では直接.accdbに変換できません。Access 2007または2010なら「データベース拡張ウィザード」が起動してそのまま.accdbへ変換できます。現行のAccessしかない環境では、Access 2003などでAccess 2000〜2003形式(JET 4.0)に一度変換してから、現行Accessで.accdbに変換する中間手順が必要です。

Q. .accdbに変換すると何か失われますか。

ユーザーレベルセキュリティとデータベースレプリケーションは.accdbで使えないため、これらを.mdbで使っていた場合は変換後に機能しなくなります。ユーザーレベルセキュリティについてMicrosoftは「obsolete and easily compromised(時代遅れで容易に突破される)」と評しており、機密性の確保には別の手段が必要です。レプリケーションを業務フローで使っていた場合は変換前に代替手段を検討する必要があります。

Q. .accdbと.mdbでファイルサイズの上限は違いますか。

違いません。Microsoftの公式仕様ページでは「2 gigabytes, minus the space needed for system objects」と両形式に共通の上限が明記されています。添付ファイル型を使うと自動圧縮されるとはいえ、.accdbでもファイルが膨張すれば同じ2GBの壁に当たります。容量の問題についてはAccessの2GBの壁とは?で詳しく解説しています。

触れないAccessが「診断できるか」だけ、確かめませんか。

顧客データは送信不要。発注の義務もありません。

約2分・ファイル送信不要・発注義務なし/説明はオンライン・売り込みはしません