掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
mdbへの複数ユーザからのアクセスについてお教えください (ID:125678)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
まずはじめに。 以下の回答では、「Access」を(dbではなく)アプリケーション名の方の意味で使っています。 なので、データベースエンジンの仕様の話では、あえてJetという呼び方をしています。 # 最近のAccessは、mdb専用ではなく、SQL Server/MSDEにも対応していますからね。 > 複数のユーザが同時にアクセスした特も正常に動作するのでしょうか? Jetにもマルチユーザー向けの機能は実装されていますので、 この問いに対しては「Yes」と答えておきます。 実際、Microsoft PRESSの ISBN4-7561-2189-6(Jetプログラマーズガイド)にも、 LAN上でのマルチユーザー使用に関して、いろいろと解説されているぐらいですし。 しかし(既にご存知だとは思いますが)、Jetというデータベースエンジンは、 『ファイル共有型データベース』です。その仕組み上、ネットワーク上に mdbを配置した形での運用には、あまり向かないというのが一般的な見解でしょう。 http://www.naboki.net/access/achell/achell_02.html その点から言えば「No」であるとも言えます。 YesとNo。曖昧な答えで恐縮ですが、個人的には、LAN上の共有フォルダに 配置しての「複数PCからの同時接続」についてはお奨めしていません。 「同一PCからの複数接続」での運用であれば問題は少ないかな、という程度です。 同時更新が頻繁に起こりえるなら、MSDE等に移行した方が無難でしょう。 なお、ネットワーク環境における注意点として、下記も読んでおいてください。 http://support.microsoft.com/kb/303528/JA/#XSLTH3236121122120121120120 また、上記に関連した物として、下記も紹介しておきます。 http://www.users.gr.jp/blogs/fullmoon/archive/2004/11/25/6267.aspx > レコードレベルでロックして開くの設定にしています。 念のために書いておきますが、Access 2003 の VBA から SetOption "Use Row Level Locking", True を実行したり、あるいはAccessのオプション画面にて [レコードレベルでロックして開く]を設定したとしても、 その設定が VB からの接続時に反映されるとは限りませんので、 その点は注意してください。 VBからそのロック設定を行うには、ADODB.Connectionにて Con.Provider = "Microsoft.JET.OLEDB.4.0" Con.Properties("Jet OLEDB:Database Locking Mode").Value = 1 Con.Open "C:\db1.mdb" のように設定する事になります。0がページロック、1が行ロックです。 # この設定は、Open後には変更できません。 また、ADODB.Recordsetオブジェクトに対しては、 RS.Properties("Jet OLEDB:Locking Granularity").Value = 2 にてセットする事になります。1がページロック、2が行ロックです。 # Jet OLEDB:Database Locking Modeとは設定値が異なるので要注意。 > 同一レコードに対し複数人が同時に処理しようとした場合、エラーとなるとおもうのですが、 Jetのリファレンスには、エラーコード表も載っていますね。 3186や3260なら、リードロックデータへの更新エラーだとか、 3197なら、更新済みデータへのアクセスエラーだとか。 > 複数人がそれぞれ異なるレコードに処理しようとした場合はOKなのでしょうか? やってみると分かるかと思いますが、同時更新に関する排他制御自体は備わっています。 が、キャッシュ更新のタイミングの問題も有りますから、非同期書き込みが行われないように するなど、確認しておく点が幾つかあります。下記の資料を完読しておいてください。 http://www.canalian.com/workshop/access/JetCache.html > また、accessて何人ぐらい同時アクセスかのうなのでしょうか? # Accessへのアクセス……奇妙に聞こえますね。(汗) 同時にmdbを開くという行為自体、できる限り避けた方が良いのですけれどね…。 なので、これについては無回答とさせてください。(^^;) 一応、Jetの仕様という点からみれば、mdbファイルへの同時アクセスの上限は 最大で255ユーザーまでとされています。が、参照専用ならばともかく、データの 更新がある事も考えれば、このユーザー数は無理があるようにも思います。 限界については、実機で耐久動作検証を行って、御自身で判断してください。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.