「Accessのデータベースファイルが気づいたら数GBになっていた」「急にフォームが開けなくなった」――こうしたトラブルを経験したことがある方は少なくないはずです。Accessは手軽に使える分、日常的なメンテナンスを怠るとファイルの肥大化・破損・複数人利用時の競合が起こりやすいデータベースです。
本記事では、Accessを長期・安定的に運用するために必要な管理操作を体系的に解説します。圧縮・修復(Compact and Repair)の手順、バックアップの実施方法、フロントエンドとバックエンドに分けるデータベース分割(スプリット)設計、インデックスを使ったパフォーマンス最適化、起動オプションの設定まで網羅します。MOS Access試験でも出題される管理操作の要点もあわせて確認してください。
データベースが肥大化・破損するしくみ
Accessのデータベースファイル(.accdb)は、レコードの削除・編集・オブジェクトの変更を繰り返すと内部に「空き領域」が蓄積します。OSのファイルシステムがHDDの断片化を起こすのと同様に、Accessも削除されたレコードのブロックを自動では再利用しないため、使えない領域がファイル内に残り続けます。
主な肥大化・破損の原因は以下のとおりです。
| 原因 | 説明 | 主な症状 |
|---|---|---|
| レコードの大量削除 | 削除後の空き領域がファイル内に蓄積し続ける | ファイルサイズが縮まらない・クエリが遅い |
| デザイン変更の繰り返し | フォーム・レポートを更新するたびに旧バージョンが残る | 特定オブジェクトを開くのが遅い |
| 不正終了(強制シャットダウン等) | 書き込み中にプロセスが終わり内部構造が壊れる | ファイルが開けない・特定テーブルが表示されない |
| 複数ユーザーの同時書き込み衝突 | ロックファイル(.laccdb)が正しく解放されないまま終了 | 次回起動時に「排他ロック」エラーが出る |
これらの問題を防ぐ基本手段が「圧縮・修復」と「バックアップ」です。問題が起きてから対処するのではなく、定期的に実行する運用習慣を先に整えることが長期安定運用のカギです。
圧縮・修復(Compact and Repair)の手順
Accessの「圧縮・修復」は、ファイル内の未使用ブロックを整理してサイズを縮小し、軽微な破損を同時に修復する機能です。1カ月に1回以上の実行を目安にしてください。
手動での実行手順
- 対象のデータベースファイルを排他モード(誰も開いていない状態)にする。他のユーザーがアクセス中は圧縮・修復を実行できません
- Accessを起動し、「ファイル」タブ →「情報」→「データベースの圧縮と修復」をクリックする
- 処理が完了するとダイアログが消え、ファイルサイズが縮小します(大きなデータベースでは数十秒かかります)
コマンドラインからの実行:バッチ処理でAccessを操作する場合は、/compactスイッチを使えます。
msaccess.exe "C:\業務DB\sales.accdb" /compact
タスクスケジューラでこのコマンドを毎週末夜間に実行するよう設定すると、メンテナンスを自動化できます。
閉じるときに自動圧縮する設定
毎回手動で実行するのが難しい場合は、「閉じるときに圧縮する」オプションが有効です。
- 「ファイル」→「オプション」→「現在のデータベース」を開く
- 「閉じるときにデータベースを圧縮する」チェックボックスをオンにして「OK」をクリックする
- 次回以降、ファイルを閉じるたびに自動で圧縮が実行される
ただし、大きなデータベースでは終了に時間がかかるため、日常的なアクセスが多いファイルには不向きな場合があります。業務終了後に手動実行する運用のほうが実態に合うこともあります。
圧縮・修復で解決できないケース
「圧縮・修復」はあくまで軽微な破損に対応するものです。以下のような深刻な破損の場合はバックアップからの復元が必要になります。
- 圧縮・修復を実行しても「データベースが認識できない形式」エラーが出続ける
- 修復後も特定テーブルのレコードが消えている・文字化けする
- 修復ツール実行時に「このデータベースは使用可能な形式でありません」と表示される
バックアップの実施手順
データを守る最後の砦はバックアップです。Accessには専用のバックアップ機能が用意されており、操作ミスや破損に備えた定期的な取得が不可欠です。
Accessのバックアップ機能を使う手順
- データベースを開いた状態で「ファイル」→「名前を付けて保存」→「データベースに名前を付けて保存」→「データベースのバックアップ」を選択
- 「名前を付けて保存」ダイアログが開き、ファイル名に日付が自動で付加される(例:
sales_2026-06-22.accdb) - 保存先を指定して「保存」をクリックする
この機能はオブジェクト(テーブル・クエリ・フォーム・レポート等)を含む全体のスナップショットを別ファイルとして保存します。バックアップ前に自動的に圧縮・修復が実行される点も特徴です。
ファイルコピーによるバックアップ
最もシンプルな方法は、Accessファイルを閉じた状態でエクスプローラーからコピーすることです。
.accdbファイルを閉じてからコピーする(開いたままコピーすると破損したバックアップになる場合があります)- コピー先フォルダには「
backup_YYYYMMDD」のような日付フォルダを作り、世代管理する - 重要なデータベースは、ネットワーク上の別ドライブや外部ストレージに保存する
バックアップ世代管理の目安
| 頻度 | 用途 | 保管期間の目安 |
|---|---|---|
| 毎日(業務終了後) | 当日の操作ミスや突発的な破損からの復元 | 7日分ローリング |
| 毎週(週末) | 週単位の誤操作・レコード誤削除への対応 | 4週分ローリング |
| 毎月(月末) | 長期の監査対応・構造変更前の保存 | 12か月分保管 |
世代管理をしない場合、「1週間前の正しいデータに戻したい」という状況で対応できなくなります。バックアップポリシーをあらかじめ決めて文書化しておくことが運用の基本です。
データベース分割(スプリット)設計の実践
複数人でAccessデータベースを共有する場合、フロントエンド(操作用)とバックエンド(データ保存用)にファイルを分割するスプリット設計が実務上の標準です。
スプリット設計の概念
| ファイル | 保存するもの | 配置場所 |
|---|---|---|
バックエンド(BE)sales_be.accdb | テーブル(実際のデータ)のみ | 共有サーバーフォルダ |
フロントエンド(FE)sales_fe.accdb | クエリ・フォーム・レポート・マクロ(テーブルはリンク) | 各ユーザーのPC |
フロントエンドはリンクテーブルを介してバックエンドのデータを参照します。ユーザーが操作するのはFEだけで、データの実体はBEに一元管理されます。
スプリット実行の手順
- 分割前のデータベース(
sales.accdb)を開く - 「データベースツール」タブ→「データベースの分割」をクリックする
- 「データベース分割ウィザード」が起動するので「データベースの分割」ボタンをクリック
- バックエンドファイルの保存先と名前を指定する(例:共有フォルダに
sales_be.accdbを作成) - 「分割」をクリックすると、テーブルがBEに移動し、FEには自動でリンクテーブルが設定される
- 「データベースは正常に分割されました」のメッセージを確認して完了
分割後の注意点
- バックアップはBEファイルを対象にする:データの実体はBEにあるため、FEのバックアップは優先度が低い(FEはいつでも再配布できる)
- BEを移動した場合はリンクを再設定する:「外部データ」タブ→「リンクテーブルマネージャー」で接続先パスを更新できる
- FEの更新はコピー配布で行う:フォームやレポートを変更したFEを各ユーザーのPCに上書きコピーして更新する。データはBEにあるため影響しない
スプリット設計の最大のメリットは、データを守りながらフロントエンドを独立して更新・修正できる点です。一枚岩の.accdbでは、フォームを更新するためにデータベース全体を誰にも使わせない時間帯が必要になりますが、スプリット後はBEは常に稼働させたままFEだけを入れ替えられます。
インデックス設定でクエリを高速化する
データ件数が増えるにつれてクエリの実行速度が低下する場合、インデックス(索引)の設定が効果的です。インデックスを設定したフィールドは検索・並べ替えの対象になったとき、Access内部がインデックスを先に参照して該当レコードへ直接アクセスするため、フルスキャン(全件読み込み)より大幅に高速になります。
インデックスを設定する手順
- 対象テーブルをデザインビューで開く
- インデックスを付けたいフィールドをクリックして選択する
- 下部の「フィールドプロパティ」エリアで「インデックス」プロパティを設定する
| 設定値 | 意味 |
|---|---|
| なし | インデックスを設定しない(既定) |
| はい(重複あり) | インデックスを設定する。同じ値の重複を許可する |
| はい(重複なし) | インデックスを設定する。このフィールドの値が一意(ユニーク)であることを強制する |
インデックスを設定すべきフィールド
- WHERE句や結合条件(JOIN)で頻繁に使われるフィールド(例:顧客ID、商品コード)
- ORDER BY(並べ替え)に使われるフィールド(例:日付、金額)
- 外部キー(他テーブルの主キーを参照するフィールド)
反対に、インデックスを乱発するとデータの書き込み速度が低下します(インデックスもその都度更新が必要なため)。読み取り専用で参照頻度が高いフィールドに絞って設定するのが最適化の原則です。
パフォーマンス分析ツールの活用
Accessには「パフォーマンス分析ツール」が標準搭載されており、最適化の提案を自動で出してくれます。
- 「データベースツール」タブ→「データベースの解析」グループ→「パフォーマンスの最適化」をクリックする
- 分析対象のオブジェクト(テーブル・クエリ等)を選択して「OK」をクリックする
- 提案結果が「推奨」「提案」「アイデア」の3段階で表示される
- 「推奨」は安全に自動修正できるもの。「提案」「アイデア」は内容を確認したうえで手動対応する
特にテーブルが多くなった段階でこのツールを走らせると、見落としていたインデックス設定の不足やデータ型のミスマッチを発見できます。
起動オプションの設定で運用を自動化する
Accessの「起動オプション」を設定すると、データベースを開いたときに特定のフォームを自動表示させたり、デザインビューへのアクセスを制限したりできます。業務利用を前提としたデータベースでは、エンドユーザーが誤ってテーブルやクエリを直接開かないよう起動オプションで操作範囲を制限することが標準的な設計です。
起動オプションの設定手順
- 「ファイル」→「オプション」→「現在のデータベース」を開く
- 「アプリケーションタイトル」に表示するウィンドウタイトルを入力する
- 「表示するフォーム」で起動時に自動表示するメニューフォームを選択する
- 「ナビゲーションウィンドウを表示する」チェックをオフにすると、テーブル等の一覧を隠せる
- 「すべてのメニューを有効にする」「すべてのショートカットキーを有効にする」チェックをオフにすると、設計画面への誘導を制限できる
- 「OK」をクリックしてデータベースを再起動すると設定が反映される
注意:起動オプションを設定した後に管理者としてデザインビューにアクセスしたい場合は、Accessファイルを開く際にShiftキーを押しながらダブルクリックすると起動オプションをバイパスできます。
MOS Access試験の管理操作チェックリスト
MOS Access 365&2019の「データベースの管理」スキル項目では、以下の管理操作が出題範囲に含まれています。
| 出題操作 | 内容 | 難易度 |
|---|---|---|
| データベースの圧縮・修復 | 「ファイル」→「情報」からCompact and Repairを実行する | ★☆☆ |
| データベースのバックアップ | 「名前を付けて保存」→「データベースのバックアップ」で日付付きファイルを保存する | ★☆☆ |
| 閉じるときに圧縮するオプション | オプション画面で「閉じるときにデータベースを圧縮する」を設定する | ★★☆ |
| 起動オプションの設定 | アプリケーションタイトルの設定・表示するフォームの指定を行う | ★★☆ |
| インデックスの設定 | テーブルのデザインビューでフィールドのインデックスプロパティを変更する | ★★☆ |
| データベースの分割 | 「データベースツール」→「データベースの分割」でBE/FEに分割する | ★★★ |
| リンクテーブルの再リンク | 「リンクテーブルマネージャー」で接続先パスを更新する | ★★★ |
| パフォーマンス分析の実行 | 「データベースツール」→「パフォーマンスの最適化」で提案を確認する | ★★☆ |
MOS試験で押さえるべき管理系の知識ポイント
- 圧縮・修復はファイルを排他モードで開く必要がある:他ユーザーが接続中は実行できないことを覚える
- バックアップは「名前を付けて保存」から行う:「Ctrl+S」では別名保存にならないことを理解する
- 起動オプションのバイパス方法:Shiftキー押しながら起動、という手順はMOS試験問題文で誘導されることがある
- インデックス「重複なし」は主キー以外のユニーク制約にも使える:メールアドレス・社員番号など1件に1つしかない値のフィールドに活用できる
- データベース分割後のテーブルはリンクテーブルとして表示される:テーブル名の左に矢印アイコンが付くことを視覚的に確認する
まとめ:管理操作を習慣化してAccessの長期運用を支える
本記事のポイントをまとめます。
- 圧縮・修復は月1回以上:削除・デザイン変更を繰り返したファイルは空き領域が蓄積するため定期実行が基本。「閉じるときに圧縮する」オプションで自動化できる
- バックアップは世代管理で取る:Accessのバックアップ機能(「名前を付けて保存」→「データベースのバックアップ」)で日付付きファイルを別フォルダに保存する。最低でも日次・週次・月次の3世代を保管する
- 複数人利用にはスプリット設計を採用する:BE(データ)をサーバーに置き、FE(フォーム等)を各PCに配布する分割構造が安定運用の標準形。バックアップはBEを優先する
- インデックスは検索・結合・並べ替えの対象フィールドに絞って設定する:パフォーマンス分析ツールで最適化の提案を自動収集できる
- 起動オプションでエンドユーザーの操作範囲を制限する:メニューフォームを自動表示してナビゲーションウィンドウを非表示にすると、誤操作リスクを大幅に低減できる。管理者はShiftキー押し起動でバイパスできる
Accessは手軽に使えるため、管理操作をおろそかにしがちです。しかし圧縮・修復・バックアップ・スプリット設計という3つの習慣を定着させるだけで、ファイル破損時の被害を最小化し、複数人での安定した運用が実現します。MOS試験対策としても、ここで解説した管理操作の手順と目的を正確に理解しておくことが合格への近道です。
