MS Access Tips/Sample and VBA and Blog customize etc...

AccessのDBファイルを長期的に安定して使用するには

Access95で作成して、機能追加、改良しつつ、Accessのバージョンもアップして使い続けているデータベースファイルがあります。このようなファイルをお持ちのかたも多く見えると思います。

このような場合に、破損や動作不良を起こすことなく安定して使い続けるためにすべきことを紹介したいと思います。

AccessのDBファイル長期的に安定して使用するには

難易度:

データベースの分割

バックエンドファイル(テーブルのみ)とフロントエンドファイル(テーブル以外のオプジェクトとリンクテーブル)に分割する。
複数のユーザーで共有する場合は、バックエンドファイルはサーバーに、フロントエンドファイルは各クライアントPCに配布する。

分割することで、「パフォーマンスが向上し、データベースファイルが破損する危険性が減少します」と公式サイトにも記述があります。

データベースを分割す

データベース分割

定期的な最適化/修復

データベースの場合はデータを削除してもディスクスペースを解放せずに再利用します。データの追加/削除を繰り返すとデータの不連続が発生してファイルサイズも増大してパフォーマンスに影響を与えます。また、破損や損傷の危険性も高まります。

詳細は下記を参照してください。 

最適化と修復を使用してデータベース ファイルの問題を予防および修復する

最適化/修復

ということでバックエンドファイルの適切な周期での最適化/修復の実行が必要です。フロントエンドファイルはデータの追加/削除は発生しないので基本的には必要ないです。ただし、ワークテーブルなどを使用している場合は、必要になってきます。

リンクしているテーブルが開かれているとバックエンドファイルの最適化はできないので、深夜にタスクスケジュラーで自動実行するようにしています。

定期式なバックアップ

上記の対策をとっていても破損するときは破損します。破損した場合、データの修復が不可能な場合が多いので、バックエンドファイルの定期的なバックアップは必須です。

これもツール等を使って自動でするようにします。バックアップソフトは有料/無料のいろいろなものが出ていますのでお好みで選択すればいいでしょう。あるいは、下記の紹介されているようにAccessで自作してもいいでしょう。

Excel VBA を学ぶなら moug モーグ | 即効テクニック | データベース自動バックアップ関数 (FSO)

hatenaの場合は、フリーのBunBackupというのを使っています。

自動バックアップソフト BunBackup - hatena chips

上記のリンク先にも書いてありますか、これは世代管理ができますので、一日1回10世代分と2時間毎過去1日分のバックアップを取るようにしています。

フロントエンドファイルは、オリジナルを特定の場所のに保存しておいて、破損したらオリジナルで上書きするようにします。サーバーの特定のフォルダにオリジナルを置いておいて、クライアントのディスクトップに自動でオリジナルで上書きするVBSファイルのショートカットを置いておいて、動作がおかしくなったらユーザーにクリックさせるようにしています。

必要に応じてリフレッシュ

公式な名称はないので、hatenaが勝手にリフレッシュと名付けましたが、下記のような操作をします。

新規のデータベースファイルを作成する。

そこに現在使用中のデータベースファイルからすべてのオプジェクトをインポートする。

新データベースファイルを使用するようにする。

なぜ、このようなことをするかというと、最適化/修復だけでは取り除けないゴミが徐々に溜まっていくことがある様なのです。このリフレッシュをするとそのゴミが取り除けるようです。

長く使い続けたファイルを最適化した後に、このリフレッシュするとさらにファイルサイズが縮小されることがあります。最適化で取り除けなっかったゴミがリフレッシュで取り除かれたということだと思われます。

フロントエンドファイルを開発中にオプジェクトの追加や削除、デザイン変更などを繰り返していくと不具合が発生するということを何度か経験しています。そのときにこのリフレッシュをすると解決することがありました。

これはそれほど頻繁にする必要はないので、フロントエンドファイルで仕様変更や機能追加などある程度繰り返した段階で実行するといいでしょう。

バックエンドファイルはそれほど必要ないのかなと経験則で思っています。

まとめ

Access95から、機能追加、仕様変更を繰り返して、Access2013までバージョンアップしつつ使い続けています。上記の方法を実行することで、途中何度か破損なども経験しましたが、現在も安定して使い続けることができています。

データベース分割、最適化、バックアップは開発者なら常識でしょうが、リフレッシュは意外と知られていないかも。


拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/447-3fa3abe9
該当の記事は見つかりませんでした。