重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

今度アクセスでデータベースを作ろうと思っています
当方かなり久しぶりにアクセスを触るので、色々と勉強しているのですが
ネットで「アクセスは壊れやすい」との情報を多く見かけます
色々と調べてみると
・更新回数(件数・入力日等)が多い
・データベースを更新する人が多い
・バックアップを毎回取る等の処理を入れていると壊れやすい
・サーバー上に置くとあまりよくない
・データが溜まってくると壊れやすい
等がわかりました

当方がこれから作ろうとしているのは
・サーバー上に置いて複数人が触るもの
・入力人数は多くても6人以下(通常は1~2人)
・一つの事柄に対して入力項目が多いが、数は年間100件程。
・毎日入力するものではなく、入力する必要が出れば入力する類
・年が切り替われば、また新しいデータベースにする
・入力項目が多いので、ある程度わけてテーブルは構築するつもりです
こういった感じです

壊れやすくしないようにするにはor上記を見た限りではやはり壊れやすいのでやめといたら等々
アドバイスをお願いします。

A 回答 (2件)

「日次更新作業」として、1日の最後に「データベースの最適化」を行えば、壊れることはありません。



ちまたで「アクセスは壊れやすい」と言っている人は「アクセスのmdbは定期的に最適化が必要」と言うのを知らない、無知な連中なので、そういうアホの言う事は信じてはいけません。

「mdbが壊れる」というのは、mdbで最適化を行わないでいて、ガベージコレクションで開放しきれないゴミが溜まり、ゴミが一定量を超えると、アクセス自身がmdbを正しく操作できなくなるからです。

この場合は「データベースの修復」で、ゴミが一掃され、アクセスで認識可能に戻ります。

当然ですが「データベースの最適化」は「溜まったゴミを消す」と言う処理なので、最適化さえしていれば、壊れる事はありません。

>壊れやすくしないようにするには

フォームでメニューを作成し「入力作業」と「日次更新」と「年次更新」の作業が出来るようにして、1日の作業が終わったら、終業前に「日次更新」を行って、マクロで「データベースの最適化」をすると良いです。

データベースの最適化をしやすくする為、入力フォームやメニューのあるmdbファイルと、テーブルの実体があるmdbファイルに分け、入力フォームやメニューのあるmdbファイルから「テーブルのリンク」を用いて、テーブルの実体があるmdbファイルを見に行くようにすると良いです(マクロで自分自身を最適化しようとすると「自分自身が使用中なので最適化できない」と言われてしまうので、マクロを動かすmdbと、テーブルの実体があるmdbを、別々のmdbにする)

当方では、上記の方法で「毎日必ず最適化」していますので

>・更新回数(件数・入力日等)が多い
>・データベースを更新する人が多い
>・バックアップを毎回取る等の処理を入れていると壊れやすい
>・サーバー上に置くとあまりよくない
>・データが溜まってくると壊れやすい

の全部の条件に当てはまってますが、10年近く、一度も壊れた事がありません。

蛇足ですが、年次処理では「レコードの削除等でデータベースを空っぽにする」ではなく「空っぽの状態のまま最適化して保存してあるmdbファイルを、マクロで本物のmdbファイルに上書きコピーする」という処理をした方が良いです。

なので、mdbは

・マクロや入力フォームやメニューフォームがあるmdbファイル(テーブルはデータ用mdbにテーブルリンクする。ユーザーはこのmdbファイルを開く)

・テーブルの実体が入っていて、日々、入力データが溜まるmdbファイル(毎日、終業前に、マクロでこのmdbを最適化する)

・テーブルが空っぽの状態のmdbファイル(年次処理でファイルコピーして、テーブルを空っぽにするのに使う)

の3ファイル構成になります。

なお、年次処理の時に、上書きされて消えてしまうmdbを、上書きコピー前に別名のファイルで保存しておけば「○○年度版のmdbデータ」として保存しておけます。
    • good
    • 0
この回答へのお礼

作成方法まで提示してくださって大変参考になりました
ありがとうございました
また、別途質問させて頂くかもしれませんが、その際はよろしくお願いします

お礼日時:2012/01/17 15:24

アクセスは単一ファイルだから、壊れようによっては、データが修復できないという悪いことが起きる可能性が高い。

 あと、ネットワーク越しのSQLだと、時々不正なデータが発生することがあるんだよね。 その辺の問題が片付けられるなら、アクセスでも十分対応できると思う。

なんかうろ覚えだけど、
テーブル名などに全角英数、記号、半角かなを使わない、
なるべくVBで書かない(できる限りクエリで済ませる)。
サーバにおくものはテーブルだけにする。
信頼の置けるネットワーク環境で利用する。
バックアップ、最適化、データベースの修復は定期的に。
などは基本かな。
    • good
    • 0
この回答へのお礼

VBで書かない等参考になりました
ありがとうございました

お礼日時:2012/01/17 15:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!