Accessは壊れやすい?

Accessは壊れやすいと言われています。
今まで何も問題なく動いていたのに、急に見慣れないメッセージが表示されて困ったことがあるかもしれません。
そこで、出来るだけ壊れなくする方法や、困った時の対処方法について記載します。
また、動きが遅くて困った時の考え方についても触れます。

1.Accessの主なエラーメッセージ

Access使用中にエラーが発生した場合の主なメッセージとして、以下のものがあります。

以上のメッセージが表示された場合は、Accessが壊れている可能性があります。(というか壊れています。)
この場合は「最適化/修復」で使用可能になる可能性が大きく、ほとんどの場合は正常に戻ります。

致命的なエラーメッセージとして以下のものがあります。

このメッセージの場合、壊れていて、しかも「最適化/修復」で復旧できる確立は、残念ながら低いです。
※これはAccessに限ったことではないですが、いざという時に備えてバックアップはしっかり取りましょう。

2.Accessが壊れる原因や対策について

Accessは本来1人で使用するものとして開発されたため、複数人による同時使用では問題が発生しやすいようです。

では、同時に何人まで使用できるか

※ただし、同時使用人数が多くなればなるほどパフォーマンスに影響が出るので、先ほどの例は「壊れないかもしれないけど」実用上問題があると言えます。
同時使用人数が増えた場合、SQL Serverにアップグレードした方が良いでしょう。
最近のSQL Serverの場合、いくつかあるエディションの中でも以前のMSDEの位置付けと言えるExpressならデータベースの容量が4GBまでと制限はありますが、 MSDEと違ってSQL Server Management Studio(SSMS)でデータベースの操作ができて(こちらも制限はありますが、かなり色々なことができます)、 小規模なシステムなら実用上問題無いレベルなので、検討してみる価値は十分にあると思います。

(テーマがAccessが壊れやすいと言われている事についてなので、タイトルに「壊れる原因」とありますが、 テーブルやフォーム、クエリなどすべてが入っている1つのmdbを共有サーバーに置いて、これを複数で使用するようなことがない限り、 それよりも「同時使用人数=パフォーマンスへの影響」の方が大きいです。)

対策方法は

  1. フォームやクエリ等とテーブルを別々のmdbに分けます。
    (ここでは、フォームやクエリなどのmdbを「プログラム用mdb」と呼びます。また、テーブルを格納しているmdbを「データ用mdb」と呼びます。)
    そしてプログラム用mdbからデータ用mdbをリンクして使用します。 この場合、データ用mdbを共有サーバーに置き、これとリンクしたプログラム用mdbを各自のPCのデスクトップ等に置き、こちらを起動して使用します。
  2. フォームはテーブルを連結せずに非連結で作成します。
    ただし、プログラム用mdb内でローカルのワークテーブルとして使用するテーブルについては連結しても問題ないです。
  3. 定期的にバックアップ及び「最適化/修復」を行います。

その他、データベースの設計等ありますが、これらでかなり回避できます。

3.どのAccessに問題があるのか

ここでは最低限の対策として、プログラム用とデータ用にmdbを分けた場合とします。

ある一人にのみエラーが出て、他の人は正常に使用出来ている場合

エラーが発生している人のPCのデスクトップ等に置いて使用しているプログラム用mdbに問題があると言えます。 この場合は、使用している「プログラム用mdb」を一旦削除して、問題の無いプログラム用mdbをコピーして、そのmdbを起動することで正常に動作するようになります。

※いつでもコピーできるように共有サーバーのどこかに置いておくと良いです。

複数の人が使用してエラーが出る場合

「データ用mdb」に問題がある(壊れている)可能性があります。 この場合は「最適化/修復」を行って下さい。 ただし、「最適化/修復」を行ってもエラーが出て、「データ用mdb」が復旧できないという最悪のケースも無いとは言えないので、 バックアップは必須と考え、取っておくようにして下さい。

※あるタイミングで手動で取る方法もありますが、忘れることもあるし、取るタイミングもまちまちだとあまり良いとは言えません。

ちなみに私が開発する場合、以下のようなリクエストがよくあるため

  1. 使用者の手間を極力少なくしたい。
  2. バックアップは曜日別に取る。

その日の最初にプログラム用mdbを起動した人が自動的に「最適化/修復」とバックアップが出来るように、プログラムを作成します。

4.手動による「最適化/修復」の操作方法

(Access2003で説明します。)

  1. Accessの使用を完全に止める。(誰も使用していない状態にする。)
  2. 事前に対象となる「データ用mdb」をコピーしておく。(「最適化/修復」中に何か問題が発生した場合に備えて。)
  3. データ用mdbを開く
  4. 画面上部のメニューの「ツール」→「データベース ユーティリティ」→「最適化/修復」を選択
    データベースウィンドウの表示が消え、画面左下に『最適化しています』と表示されます。
    mdbのサイズにもよりますが、通常数秒から数十秒で「最適化/修復」は終了し、セキュリティ警告のダイアログが表示され、「開く」をクリックするとデータベースウインドウが再度表示されます。
  5. mdbを閉じます。