- - PR -
排他モードで開かれる可能性のあるMDBより常にデータを読み込む方法
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-10-27 15:58
いつもお世話になっています.
現在Webシステムを開発しています. このシステムが使用するマスターデータの一部がMDBファイル上に管理されています. このMDBが編集されるときは排他モードで開かれるのですが、この間WebシステムからMDBファイルにアクセスできず、エラーになってしまいます. MDBファイルよりマスターデータを読み取りたいだけなのですが、排他モードで開かれていてもデータを読み取る方法はありませんでしょうか? 環境: Webシステム開発言語:ASP.net(VB.net) .NET Frame Work Version:1.1 稼動サーバー:Windows2003Server MDBファイル version:Microsoft Access 2000 よろしくおねがいします. _________________ | ||||
|
投稿日時: 2005-10-27 16:08
どもです。がると申します。
んっと…とりあえず、排他というのは 「データの整合性を保つためにデータの書き込み、もしくは 読み書きを一時的に抑止するためのもの」 です。 なので、もし排他モードが「必要であるために排他されている」 のであれば、そのタイミングでデータを読むのは危険です。 というか、排他の意味がなくなるので、そういった機能が 提供されているとは考えにくいかと思われます。 データの編集ですと、特にデータ同士が何らかのつながりが ある場合に、編集中は「一時的にそういったつながりが おかしな状態になる」可能性があるので。 そのタイミングでデータを読むのは避けたほうがよろしい かと思います。 で…普通のDBMSだと「必要なテーブル/レコード/カラムへの 排他」が容易に制御できるのですが。 ACCESSは…どうなんでしょうか? 書き込みを見ている限り ですと、随分と木目の粗い排他に見えるのですが(苦笑 もし「mdbファイル一式丸ごと排他しか出来ない」ので あれば、mdbファイル自体を切り分けるなど、そういった 設計レベルでの手段をとったほうがよいと思うのですが どんなもんでしょうか? ACCESS自体へはあまり理解がないので、一般的なDBMSとか 排他制御とか、そのあたりからの見解なのであるいは あまり参考にならないかもしれませんが。 | ||||
|
投稿日時: 2005-10-27 16:28
記憶が曖昧なのですが、確かAccessは複数ユーザが同時に開く、という事は出来なかったと思います。
(っと、ちょっと検索してみたらこれがひっかかりました) 代わりに、複数ユーザが入力する時には、データベースを分割して後で統合、というような機能を提供していたと思います。 (これもまた記憶が曖昧なんだけど、レプリケーション・・・という名前だったような) なので、プロジェクトが後戻りできるうちに、他のデータベースを検討するのがいいと思います。 | ||||
|
投稿日時: 2005-10-27 17:15
すばやいお返事ありがとうございます.
MDBを使用せずに他のDBMSに移行する件ですが、今開発しているシステムがスタートする前から存在するMDBで、まったく別のシステムから情報のメンテナンスをしているようなんです. ですので、MDBをべつのDBMSに変更することは事実上不可能といっても良いかもしれません. 私のほうでもいろいろ調べているのですが、調べれば調べるほど絶望的な感が…. 引き続き、何かございましたらよろしくお願いいたします. | ||||
|
投稿日時: 2005-10-27 18:38
unibon です。こんにちわ。
良く分かりませんが、MDB は所詮ファイルなので、最悪、ファイルをコピーして、コピー先の .mdb ファイルにアクセスすれば、いくらでも読めるはずです。 試しにそのファイルを使用中に、Explorer でそのファイルを(Ctrl キーを押しながらドラッグするなどして)コピーし、Microsoft Access などでオープンしてみてください。できるはずです。 でも、これってぜんぜんスマートな解決方法ではないです。排他モードで開く側をなんとかできれば、もちろんそれが良いのですが。 | ||||
|
投稿日時: 2005-10-28 09:49
お返事ありがとうございました.
排他モードで開かれたMDBを直接開くことはどうやら無理なようですね. (MicrosoftのHPにも排他の定義に「他のユーザーが開くことは出来ない」と書かれていましたし.) 排他で開くシステムのほうを触ることが契約上できないので、定期バッチによる物理ファイルコピーで何とか対応してみたいと思います. ありがとうございました. | ||||
1
