• ベストアンサー

AccessのDB破損に関して お教え願います。

OS:Windows2000 Access Version:Access2002(XP) いつもお世話になっています。 Accessにてシステムを構築し、ある業務にて運用しています。 データmdbをサーバにおいて、クライアントをネットワーク経由 にてプログラムmdbを使用してアクセスしています。 上記状態で最近以下のメッセージが頻発して困っています。 「Microsoft Access データベースが開いているときに、 いずれかのユーザが Microsoft Access を終了しました。このデータベースを修復しますか?」 この状態になった場合は、最適化を行えば使えるようになりますが、頻発して困っています。 同様のシステムを運用しているところが複数在りますが・・・・ 同現象が発生しているのが1つしかないことです。 全部同じ現象が発生しているのなら、プログラム的なバグと特定できるのですが、、、、、 なにとぞ、ご教授をお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.6

No.5です。 別の対処法に思い当たりましたので、追記します。 「クライアントをネットワーク経由にてプログラムmdbを使用して」 とのことですが、もしデータmdb側からプログラムmdb側を参照していない(=データmdb側に、プログラムmdbのテーブルへのリンクを置いていない)なら、このプログラムを使う全てのユーザーPCに、このプログラムmdbを置くことはできませんか? (現在ネットワークにおいてあるプログラムmdbは、コピー元として置いておきます。このとき、データmdbへのテーブルリンクは張り直す必要はありません) 私も勤務先で、Accessでのシステムを構築・運用しているのですが、上記と全く同じ方法をとっています。 (AccessのバージョンはAccess2000ですが) で、各ユーザーには「自分のPCにコピーしてから使ってくださいね」とお願いしているのですが、何人かの方はネットワーク上に置かれたコピー元を直接起動しているらしく、kjさんと同様の現象が起きることがあります。 (このとき、置き換えできなかったdb1.mdbやdb2.mdbなどが同じフォルダに残ったままになっています) 各ユーザーの端末のHDDに空きがあるようでしたら、お試し下さい。

kj_
質問者

補足

お礼が遅れて申し訳ありません。 DexMachina様回答ありがとう御座います。 どうやら、深追いしたところ そのmdbを使用し、vb(ado)にて使用しているモジュールがあり。 MDAC(Microsoft Data Access Components)のVERSION不一致に寄る原因が大きいことが判明いたしました。 複数の業務で、起きないのは導入時期の差により MDACのVERSIONが変わっている事の模様です。 回答を頂いた皆様ありがとうございました。

その他の回答 (5)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.5

以下の操作をして、設定を確認して下さい: 1)ツール(T)→オプション(O)でオプション設定画面を開く 2)「全般」タブで、「閉じるときに最適化する(C)」のチェックを確認する もしチェックがオンになっていたら、オフにして暫く様子を見てみて下さい。 ・・・オフになっていたら、残念ながら私ではお力にはなれません。 このチェックがオンの場合、mdbファイルを閉じると自動的に最適化が行われます。 この際、元のファイルと同時に、最適化中の複製ファイル(通常はdb1.mdb、元のファイルがdb1.mdbの場合はdb2.mdb)が一時的に共存し、複製ファイルの最適化が終了すると、元のファイルが削除されて複製ファイルに置き換えられます。 この『置き換え』があるため、同時に複数のユーザーが使用している場合は最適化は行われないのですが、一度最適化(複製)が始まってしまうと、その最中に他のユーザーが立ち上げても最適化は中断されません。そして最後の置き換えの時点で、他のユーザーが元のファイルを使用しているために、置き換えが中断され、db1.mdbはそのままの名前で、元のファイルと同じフォルダ残されます。 もし上記チェックがオンになっていたとすると、このあたりの現象が関係しているのではないかと推測します。 なお、追加クエリやテーブル作成クエリなどを使用している場合は、最適化を行わないとファイルサイズが膨張していきますので、他のユーザーが使っていない時間帯を見計らって手動で最適化を行って下さい。

  • keikan
  • ベストアンサー率42% (75/176)
回答No.4

特定のクライアントででるなら、そのクライアントのMDBをコピーし直してやったりしてみてください。 レプリカならレプリカの同期ではなく一度削除して新たにレプリカを作成し直してみてください。 おかしいクライアントのaccessをインストールし直してみたりもしてみてください。 あとはサーバMDBのテーブルを別のテーブルにすべてインポートして再構築してみたり。 でも、このエラーの出方だとフォームを開いていているときに、バックグラウンドや他のユーザーが同じレコードを操作していたりとかかな。 そのクライアントだけ何か他のこともしてたりしませんか?最近ユーザーが変わったとかもありませんか? また、そのクライアントのHDそろそろやばくなってたりしませんか?PC3年以上たってたりしませんか? 通常サーバー側にデータがあっても、作業用のデータがクライアントで作成されますのでクライアント側のPC調子悪くてもサーバー側のデータ壊れることもあるかもです。

kj_
質問者

補足

keikan様 ご回答ありがとうございます。 MDBの再構築は既に行っております。 また、サーバーを交換(一時的に)を行いましたが、これも意味を得ませんでした。 また、完全ローカルネットワークの為、WINUPDATEの様な環境操作も行って居ないとの事です。 PCの方も3年近くはたっておりますが、スペック的にはまだ行けると思います。 ※クライアント(サーバーはもうちょっと上) 【CPU 1Gクラス】【メモリ 384M】【HDD 空きで4G】

  • 9013yagi
  • ベストアンサー率39% (15/38)
回答No.3

 クライアント側から直接リンクテーブルへ書き込み処理 を連続して行っていたりしないでしょうか?  また、同時に複数の人間が同じテーブルへの書き込み、 読み出し等が頻発するような作りになっていないでしょう か?  私の場合は、一旦必要な情報を全てクライアントに移動 して処理後、変更データのみをデータベースに返す形に することで、頻度はへりました。

kj_
質問者

補足

9013yagi様 ご回答ありがとうございます。 業務の性質上、1つのテーブルに対し複数のコネクトが発生しますが、レコード単位で考えますとロックが発生するような感じではありません。 同一環境が複数在り、1箇所だけがこの状況に陥ってるのでプログラム修正を戸惑っております。。 ※他の環境の方が、マシンスペック劣っていたり、業務の激しさも2倍近くあるのですが、、、

  • tak2003
  • ベストアンサー率32% (174/540)
回答No.2

関係あるか良く分からないのですが、MDBの修正差分を当てる時に「最適化と再リンクは別のフォルダに移動させてから実行すること!!」と書いてあります。 権限の引継ぎなどで不具合が生じるらしいです。 ご参考まで

kj_
質問者

補足

tak2003様 ご回答ありがとうございます。 上記方法も試させていただきます。 追記ですが、ネットワーク環境がらみも業者を使い見ていただきましたが問題無いそうです。

  • toboty
  • ベストアンサー率36% (97/266)
回答No.1

>最適化を行えば使えるようになりますが、頻発して困っています。  解決策ではないので恐縮ですが、私のところでも同様のトラブルが発生しています。OSはWindowsXPでアクセス2002と、ほぼ同じ条件です。同じようなシステムを3つ運用していますが、アクセス97で組んだシステムでは何も異常が出ないので、これはアクセス2002のバグではないかと思っています。しょっちゅう発生していますので、対処療法ですが午前と午後の2回バックアップを取っています。

kj_
質問者

補足

toboty様 回答ありがとうございます。 バックアップは所定の時間で取っておりますので、復旧(及び データ保護)に関しては問題は無いのですが。。。 復旧を行う間、業務が停止してしまうのです。 現状の環境で、どうにか稼働率を上げる方法を探しております。