非常に奇妙な(そして不安定な)動作をするかなり大きなAccess DBを継承しました。つまり、データベースへの更新の一部が失われます。これを回避するために何ができるでしょうか?より良いトランザクション制御を提供するためのAccessの設定はありますか?
詳細は次のとおりです。
- 書き込みアクセス権を持つアクセスユーザーが1人います(非常に限られた数のユーザーによって共有されています。現在、他のユーザーは休暇中なので、私だけです)。
- 読み取りアクセスしか持たない多くの人が使用する別のアクセスユーザーがいます。
- データへのいくつかの変更は、書き込みユーザーによって行われます。
- テーブルやアプリケーションを離れて再入力した後、変更は「コミット」されたようです。
- しばらくすると(通常は一晩)、変更が失われ、データが古い値に戻ります。
この動作の原因は何ですか?
私たちの理論では、これはAccess内の奇妙なトランザクション制御によって引き起こされます。読み取り専用ユーザーは、クエリまたはフォーム内で使用されるデータに対して、ある種の「排他的ロック」を取得します。ユーザーがそのクエリ/フォームを離れると、Accessはこれがまだデータベースにあることを確認します。その間に書き込みユーザーがデータを変更した場合、読み取り専用ユーザーがクエリ/フォームを離れると、これらの変更は元に戻され、更新が失われます。これは意味がありますか?これはMS-Accessの既知の問題ですか?
また、この問題を回避する方法にも関心があります。これはAccessに固有のものであり、トランザクション制御が優れた「実際の」データベースに切り替えることによってのみ回避できますか?(技術的な観点からは、それは素晴らしいことですが、もちろん、プロジェクトのこの時点では避けたい緊急の作業です。)
ご入力いただきありがとうございます。必要な追加情報がある場合はお知らせください。