「Accessのファイルサイズがいつの間にか大きくなっている」
「データを削除したのにファイルサイズが小さくならない」
「Accessのファイルが2GB近くになっているが、このまま使って大丈夫なのか」
長年Accessを使っていると、このような問題が発生することがあります。
Accessのデータベースファイルは、データを追加するだけでなく、削除や更新、一時テーブルの作成などを繰り返すことでも徐々に肥大化することがあります。
また、Accessのデータベースファイルには約2GBという容量上限があります。
容量の上限に近づくと、データを追加できなくなったり、処理が不安定になったりする可能性があるため注意が必要です。
今回は、Accessファイルが肥大化する主な原因と、2GB制限への対策について解説します。
Accessで使用する「.accdb」や「.mdb」形式のデータベースファイルには、基本的に1ファイルあたり2GBまでという容量制限があります。
正確には、システム情報などに使用する領域を含むため、実際にデータとして2GBすべてを使用できるわけではありません。
そのため、
といったサイズまで増えている場合は、早めに原因を確認した方がよいでしょう。
2GBに達してから対策を考えるのではなく、余裕があるうちにデータ構成や運用方法を見直すことが重要です。
ここで注意したいのが、2GBという制限はAccessシステム全体ではなく、1つのAccessデータベースファイルに対する制限だという点です。
例えば、
にAccessファイルを分割している場合、それぞれが別ファイルとして扱われます。
また、SQL Serverなど外部データベースのテーブルをAccessからリンクして利用している場合、その外部データベースのデータ容量がそのままAccessファイルの2GB制限に含まれるわけではありません。
そのため、Accessの画面や帳票を残しながら、データだけを別のデータベースへ移行することで容量問題を解決できる場合があります。
Accessファイルのサイズが増える理由は、単純に「登録したデータが増えたから」だけではありません。
代表的な原因を確認してみましょう。
最も分かりやすい原因は、データそのものが増えているケースです。
例えば販売管理システムで、
などを何年間も蓄積していると、当然ファイルサイズは大きくなっていきます。
導入時には数万件だったデータが、10年使用することで数十万件、数百万件になっていることもあります。
特に、毎日大量の明細データが登録されるシステムでは注意が必要です。
業務上参照する必要がない古いデータについては、過去データ用の別ファイルへ移動する方法があります。
例えば、
と分けて管理します。
ただし、古いデータを安易に削除すると、過去の売上確認や帳票出力ができなくなることがあります。
実際の業務でどの期間まで必要なのかを確認したうえで整理する必要があります。
Accessでは、テーブルのデータを削除しても、その分だけすぐにファイルサイズが小さくなるわけではありません。
例えば、
100万件のデータを取り込む
↓
大量の一時データが作成される
↓
処理終了後にデータを削除する
という処理をしても、Accessファイルそのもののサイズは大きいまま残ることがあります。
これは、削除されたデータが使用していた領域が、Accessファイル内部に空き領域として残るためです。
そのため、
「テーブルを見るとそれほどデータは多くないのに、Accessファイルだけが1GBを超えている」
という状態になることがあります。
このような場合には、Accessの**「データベースの最適化/修復」**を行うことで、不要になった領域を整理できる場合があります。
最適化後に、
1.2GB
↓
400MB
など、大幅にサイズが縮小するケースもあります。
ただし、業務で使用している重要なAccessファイルに対して作業を行う場合は、必ず事前にバックアップを取得してください。
Accessシステムでは、集計や帳票作成などのために「一時テーブル」を使用していることがあります。
例えば、
元データを抽出
↓
一時テーブルへ保存
↓
集計処理
↓
帳票出力
↓
一時テーブルのデータを削除
という処理です。
このような処理を何度も繰り返すと、実際には一時データが削除されていても、Accessファイル内部では使用済み領域が増えていきます。
その結果、日常的にAccessファイルが肥大化することがあります。
一時テーブルの利用方法を見直します。
場合によっては、
といった改善方法があります。
「最適化すると小さくなるが、数日するとすぐに元のサイズに戻る」という場合は、一時テーブルなどの処理を確認してみるとよいでしょう。
Accessでは、画像やファイルをデータベース内に保存することもできます。
例えば、
などです。
しかし、このようなファイルをAccessデータベースそのものに保存すると、容量を大きく消費します。
写真やPDFは1ファイルだけでも数MBになる場合があります。
仮に1ファイル2MBのPDFを500件保存すると、それだけで約1GBになります。
Accessには2GBの上限があるため、画像や添付ファイルを大量に格納する用途には向いていないケースがあります。
画像やPDFなどはAccess内部に保存せず、
などへ保存し、Accessにはそのファイルの保存場所だけを記録する方法があります。
例えばAccessには、
\\fileserver\documents\A001.pdf
のようなファイルパスのみを登録します。
画面上のボタンをクリックすると対象のPDFを開く、といった仕組みにすることでAccess本体の容量増加を抑えることができます。
システムによっては、ユーザーが意識していないところでデータが増え続けている場合があります。
例えば、
などです。
通常の画面では見えないテーブルに大量の履歴が蓄積されていることもあります。
「取引データはそれほど増えていないのにAccessファイルが大きくなっている」という場合は、こうした内部データも確認する必要があります。
ログや履歴について、
を確認します。
例えば、操作ログは直近1年間だけAccessに保持し、それ以前はCSVや別データベースに保存するといった方法があります。
Accessファイルが大きくなった場合、まず「データベースの最適化/修復」を行うことで改善することがあります。
しかし、
最適化すると500MBまで小さくなる
↓
1週間後には1GBになる
↓
また最適化する
という状態を繰り返している場合は、最適化だけでは根本的な解決になっていません。
この場合、
などを確認する必要があります。
特に長年使用されているAccessシステムでは、当初想定していなかったデータ量まで増えていることがあります。
Accessの容量対策として、データを複数のAccessファイルに分ける方法もあります。
例えば、
を別ファイルにする方法です。
Accessでは別のAccessファイルにあるテーブルを「リンクテーブル」として参照できます。
そのため、利用者から見る画面を大きく変更せずにデータを分割できる場合があります。
ただし、ファイルを分割すれば必ず性能や安定性が向上するとは限りません。
システムの規模によっては、Accessファイルを複数に分けるよりもSQL Serverなどへデータを移行した方が管理しやすくなる場合があります。
Accessのデータ量が今後も増え続けるのであれば、Accessファイルを整理するだけでは再び2GBの制限に近づく可能性があります。
このような場合には、データをSQL Serverなどへ移行する「アップサイジング」も選択肢になります。
例えば、
現在
Access
となっているシステムを、
移行後
Access
SQL Server
という構成に変更します。
Accessで作り込まれた画面や帳票を残しながら、データ部分だけをSQL Serverへ移行できる場合があります。
この方法であれば、Accessシステムを全面的に作り直さずに容量問題や大量データへの対応を進められる可能性があります。
Accessファイルのサイズが大きくなってきた場合は、次の点を確認してみてください。
特に、
「現在1.8GBだから、まだ200MB余裕がある」
と考えるのはおすすめできません。
一時処理によって急激にファイルサイズが増加することもあるため、2GB近くになっている場合は早めの対策が必要です。
Accessファイルが肥大化する原因には、
などがあります。
単純な肥大化であれば「データベースの最適化/修復」で改善できる場合があります。
しかし、利用するたびにファイルサイズが増え続ける場合や、すでに2GB近くまで達している場合には、データ構成や処理方法そのものを見直す必要があります。
Accessには2GBという制限がありますが、
などによって、現在使用しているAccessシステムを活かしながら対応できるケースもあります。
システムハウスグローバルでは、既存のAccessシステムの調査・改修を行っています。
「Accessファイルが2GB近くになっている」
「最適化してもすぐファイルサイズが大きくなる」
「どのテーブルが容量を使用しているのかわからない」
「SQL Serverへ移行した方がよいのか判断できない」
といった場合でも、現在のAccessファイルを確認し、原因や改善方法を調査することが可能です。
既存の画面や帳票、VBAをできるだけ活かしながら、データ整理やAccessファイルの分割、SQL Serverへのアップサイジングなど、現在のシステムに合わせた改修をご提案します。
Accessの容量不足やファイル肥大化でお困りの場合は、お気軽にご相談ください。
Accessは基本的に小規模システム向きです。
規模の制限はありませんが、ファイルサイズ(画面、データベース、帳票を含め)が最大で2GBまでしか作れません。
人数の制限もありませんが、弊社では10人以下での使用をおススメしております。
※同時使用でファイル破損のリスクがあるからです。
はい、可能です。
既存のAccessシステムについて、設計書がない場合でも内容を解析したうえで、保守契約を締結することができます。現在の構成や機能を把握し、適切なサポート体制をご提案いたします。
はい、主な原因としては次のようなものが考えられます。
これらの症状が見られる場合は、データベースの 診断・最適化・分割 などで改善できます。当社では現状調査から対策のご提案まで承っておりますので、お気軽にご相談ください。
Access 2.0、97、2000、2003などの旧バージョンから、最新のAccess 365まで幅広く対応可能です。旧バージョンで動いているシステムの調査・移行も対応いたします。
mdb形式のままでも動作させることは可能ですが、マイクロソフトとしてはすでに、2003以前のAccessはサポート対象外としています。
accdb形式では新しい機能が追加されておりますので、機能強化等を行う際に、開発がしやすいといった利点があります。
今後もAccessを使い続けていくのであればaccdb形式にバージョンアップしたうえで、機能追加などの修正を行ったほうが、より長い期間使い続けていけるかと思います。