AccScan
技術

AccessのJET/ACEエンジンとは|歴史・2GB制限・ファイル型の限界

AccessのデータベースエンジンはJET(1992年〜)からACE(Access 2007〜)へ変遷。.mdbから.accdbへの切り替え理由、2GBの壁・同時利用の遅さがエンジン設計に由来する理由、JETとACEの機能差を公式出典つきで解説します。

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

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

結論:2GBの壁もロック競合も、エンジンの設計由来です

Accessの1ファイル2GB上限や、複数人で使うと遅くなる問題は、設定だけで構造上の制限を取り除くことはできません。どちらもAccessのデータベースエンジン(JETおよびその後継ACE)のファイル型という設計から来ている部分が大きいためです。このエンジンが何で、どう変わってきたかを理解すると、Accessの制約がなぜ発生するのか見通しがよくなります。

JETエンジンとは何か

JET(Joint Engine Technology)は、1992年のAccess 1.0リリースと同時に登場したデータベースエンジンです。当初はAccessを含むMicrosoft製品向けのデータアクセス基盤として開発され、Visual BasicやExcelからも利用されました。後にWindowsコンポーネントとして提供されるようになり、バージョン1.0から4.0まで複数の改版が行われました。

JETには「Red」と「Blue」の2系統があります。AccessやOfficeで使われてきたのはJET Red。一方、Active DirectoryなどWindowsの内部機能で使われているExtensible Storage Engine(ESE)は、JET Blueと呼ばれる別物です。混同されやすいのですが、AccessのJETはこの内部エンジンとは別系統です。

JET Redの最終バージョンはJET 4.0で、32bit専用のまま開発が終了しました。

ACEエンジンへの移行:Access 2007が転換点

2007年のAccess 2007と同時に、データベースエンジンはJET RedからACE(Access Connectivity Engine、またはAccess Database Engineとも呼ばれます)へと変わりました。ファイル形式も.mdb(Microsoft Access Database)から.accdb(Access Database)に切り替わり、このタイミングが現行Accessの起点となっています。

Microsoftの公式ドキュメントは「ACEはJETの基盤の上に構築されたOfficeのデータベースエンジン」と説明しています。つまり完全な別物ではなく、JETの後継として設計されたエンジンです。同時に「ACEはOfficeの設計原則に従っており、JETが対応していた一部のシナリオには対応していない」とも記されており、後継エンジンながら機能の絞り込みも行われました。

Access 2010以降でACEに64bit版が追加されました。一台のPCにインストールできるのは32bit版か64bit版のどちらか一方のみで、Officeのビット数と一致させる必要があります。JETには64bit版がなく、ACEで後から64bit対応が追加されたことで、この点でも両エンジンの差異が生まれました。

mdbとaccdbの違いをエンジン目線で整理する

.mdb形式にはJET 3.0/3.5/4.0と複数の世代があります(Access 97はJET 3.5、Access 2000以降がJET 4.0)。現在でも主に参照されるのはJET 4.0形式のmdbです。一方、.accdb形式はACEが扱う新形式で、Access 2007以降が既定で使います。どちらのファイル形式でもファイルサイズの上限は2GB(システムオブジェクト用の領域を差し引いた値)で変わりません。この上限はエンジン設計上の仕様であり、設定変更では引き上げられません(Access仕様:Microsoft公式)。

項目.mdb(JET 4.0形式).accdb(ACE)
ファイルサイズ上限2GB2GB(変わらず)
同時利用ユーザー数上限255255(変わらず)
多値フィールド非対応対応
添付ファイルフィールド非対応対応
データベース暗号化独自方式Windows Crypto API使用
ユーザーレベルセキュリティ対応非対応(廃止)
データベースレプリケーション対応非対応(廃止)
Access 2003以前での使用可能不可
専用OLE DB/ODBCドライバーJETプロバイダーは32bit専用。.mdbはACE経由で64bit接続可32bit/64bitあり(Access 2010以降)

.accdbの変換で失われる機能もあります。ユーザーレベルセキュリティとデータベースレプリケーションは.accdbでは使えません。Access 2003以前の環境と共有する必要がある場合は.mdbのまま残す選択肢も出てきます。

ファイル型DBの限界がエンジン由来である理由

AccessのエンジンはSQLデータベースサーバーとは根本的に異なる構造です。SQL ServerやPostgreSQLはデータをサーバープロセスが一元管理し、クライアントは通信プロトコル越しに要求を送ります。一方、JET/ACEはファイルを複数のPCが直接読み書きする設計です。

この設計の結果として生じる制約は次の3点です。

  • ページロックの競合:同時書き込み時、同じページ(データベースファイル内の固定長の格納単位)にアクセスするとロックが衝突します。ページレベルとレコードレベルの2種類があり、前者は同一ページの他レコードも巻き込んで遅延が起きます。
  • ネットワーク越しのオブジェクト転送:DB分割をせず共有フォルダのaccdbを全員が直接開く運用では、フォームやクエリ定義ごとネットワーク経由で転送されます(当社の移行支援実務による観察)。サーバー型はクエリ処理をサーバー側で実行し結果セットだけを返すため、このような大量転送は起きにくい構造です。
  • 2GB上限:エンジンの内部仕様であり、設定で変更できません。削除した行の領域も即座には解放されないため、見た目のデータ量より早く上限に達することがあります。

複数人利用の問題についてはAccessが複数人で使うと遅い・壊れる原因で、2GB上限の詳細はAccessの2GBの壁とは?でそれぞれ解説しています。

ACEは現在も維持されているのか

ACEのプロバイダーは、Microsoft.ACE.OLEDB.16.0(Access 2016以降)が現行バージョンです。Microsoft 365版のAccessではACEが引き続き使われており、Monaco SQLエディタ(2024年10月にM365版で展開)のような新機能も追加されています。

ただし、JETには64bit版が存在しないため、.mdbファイルを64bit版Officeから接続したい場合はACEを経由する必要があります。OLE DB Provider for Jet(Microsoft.Jet.OLEDB.4.0)は32bit版のみで提供されており、64bitアプリケーションから直接利用できません(Microsoft Learn:JET OLE DBは32bit版のみ)。

現行のAccess環境でSQLデータベースへの移行を検討している場合、バックエンドだけSQL Serverに移してフロントエンドはAccessのまま残す方法もあります。詳細はAccessの画面はそのまま、データだけSQL Serverへ移す構成をご参照ください。

自社のAccessが移行の対象になるかどうか判断がつかない場合は、無料の解析可否チェックからお確かめいただけます。

よくある質問

Q. JETとACEは何が違うのですか。

JET(Joint Engine Technology)はAccess 2003以前が使っていたデータベースエンジンで、32bit専用のエンジンです。後にWindowsコンポーネントとしても提供されました。ACE(Access Connectivity Engine)はAccess 2007以降のエンジンで、.accdb形式・多値フィールド・添付ファイルフィールドに対応し、64bitドライバーも提供されています。Microsoftは「ACEはJETを基盤として構築されたOfficeのデータベースエンジン」と説明しており、後継エンジンという位置づけです。

Q. .mdbと.accdbはどちらが安全ですか。

暗号化の観点では.accdbが有利です。.accdbはWindows Crypto APIを使った暗号化に対応しており、.mdbの独自方式より強固とされています。ただし、.accdbはAccess 2007以降でしか開けないため、古い環境が混在する場合は互換性と安全性のバランスで判断します。2GB上限や同時利用の制約はどちらも同じです。

Q. 2GBの制限はACEになっても変わらないのですか。

変わっていません。Microsoftの公式仕様ページには「2 gigabytes, minus the space needed for system objects」と明記されており、.mdb・.accdbともに同じ上限です。この制限はエンジン設計に由来するため、設定変更では引き上げられません。回避策は複数のバックエンドファイルに分割するか、SQL ServerやAzure SQLなどサーバー型DBへ移行することです。

Q. JETのODBC・OLE DBドライバーは64bit版がありますか。

JETのOLE DBプロバイダー(Microsoft.Jet.OLEDB.4.0)とJET ODBCドライバーは32bit版のみです。64bitアプリケーションからAccess形式のファイルに接続する場合は、ACEのドライバー(Microsoft.ACE.OLEDB.12.0以降)を使う必要があります。ただし、ACEは一台のPCにインストールできるアーキテクチャが一種類(32bitまたは64bit)に限られており、Officeのビット数と合わせる必要があります。

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

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

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