Accessは壊れやすいと言われています。
今まで何も問題なく動いていたのに、急に見慣れないメッセージが表示されて困ったことがあるかもしれません。
そこで、出来るだけ壊れなくする方法や、困った時の対処方法について記載します。
また、動きが遅くて困った時の考え方についても触れます。
以上のメッセージが表示された場合は、Accessが壊れている可能性があります。(というか壊れています。)
この場合は「最適化/修復」で使用可能になる可能性が大きく、ほとんどの場合は正常に戻ります。
このメッセージの場合、壊れていて、しかも「最適化/修復」で復旧できる確立は残念ながら低いです。
※これはAccessに限ったことではないですが、いざという時に備えてバックアップはしっかり取りましょう。
Accessは本来1人で使用するものとして開発されたため、複数人による同時使用では問題が発生しやすいようです。
※ただし、同時使用人数が多くなればなるほどパフォーマンスに影響が出るので、先ほどの例は「壊れないかもしれないけど」実用上問題があると言えます。
同時使用人数が増えた場合、SQL Serverにアップグレードした方が良いでしょう。
SQL Serverの場合、いくつかあるエディションの中でも以前のMSDEの位置付けと言えるExpressならデータベースの容量が10GBまで(2008 R2以降。2008以前は4GB)と制限はありますが、MSDEと違ってSQL Server Management Studio(SSMS)でデータベースの操作ができて(※1)、小規模なシステムなら実用上問題無いレベルなので、検討してみる価値は十分にあると思います。
※1:制限はありますが、かなり色々なことができます。
テーマがAccessが壊れやすいと言われている事についてなので、タイトルに「壊れる原因」とありますが、テーブルやフォーム、クエリなどすべてが入っている1つのaccdb(Access2003までのmdb)を共有サーバーに置いて、これを複数で使用するようなことがない限り、それよりも「同時使用人数=パフォーマンスへの影響」の方が大きいです。
ただしレスポンスについては、マシンスペックやネットワークの状況に大きな影響を受けることが多いです。
その他、データベースの設計等ありますが、これらでかなり回避できます。
ここでは最低限の対策として、プログラム用とデータ用にaccdbを分けた場合とします。
エラーが発生している人のPCのデスクトップ等に置いて使用しているプログラム用accdbに問題があると言えます。 この場合は、使用している「プログラム用accdb」を一旦削除して、問題の無いプログラム用accdbをコピーして、そのaccdbを起動することで正常に動作するようになります。
※いつでもコピーできるように共有サーバーのどこかに置いておくと良いです。
「データ用accdb」に問題がある(壊れている)可能性があります。 この場合は「最適化/修復」を行って下さい。 ただし、「最適化/修復」を行ってもエラーが出て「データ用accdb」が復旧できないという最悪のケースも無いとは言えないので、バックアップは必須と考え取っておくようにして下さい。
※あるタイミングで手動で取る方法もありますが、忘れることもあるし、取るタイミングもまちまちだとあまり良いとは言えません。
ちなみに私が開発する場合、以下のようなリクエストがよくあります。
そこで、その日の最初にプログラム用accdbを起動した人が自動的に「最適化/修復」とバックアップが出来るように、プログラムを作成します。