タイトル | : Re^3: アクセスの排他ロック |
記事No | : 3327 |
投稿日 | : 2006/03/19(Sun) 16:25 |
投稿者 | : 魔界の仮面弁士 |
>> hhttp://www.naboki.net/access/achell/achell_01.html 》Access の排他制御はすべてページ単位(1ページ=2048byte)で行われます。
Jet 4.0 からは、1ページ = 4096 Bytes になっていますけれどね。(^^;
それはさておき、Jet 内部のロック機構といっても、あれで結構複雑な仕組みに なっているので、まともに解説しようとすると、掲示板じゃ追いつかないです。
とりあえず、殴り書き程度にざっくりと書いたものを、一時的に下記に置いておきますが、 回答とは関係ない部分なので、無理して読む程の価値は無いです。(そのうち消すかも) hhttp://www.ocv.ne.jp/~oratorio/windev/JetLock.txt
# Jet 4.0 のレコードロックに関しては、まとまった資料がなかなか見当たらず、記述を断念……。
> VB.NETのコード内から排他制御を行うというのは無理ということなのでしょうか? ADO.NET 1.0 は非接続型のミドルウェアなので、継続的なロック機構には向きません。 細かいロック制御が必要ならば、DAO か ADO を使った方が良いですね。
> レコード単位ではなく、ページ単位、MDB全体などの排他制御でも構いません。 データベース全体を排他で開くという事であれば、DAO の OpenDatabase メソッドで 排他オプション引数に True を指定すれば OK です。 ADO の場合は、Connection.Mode プロパティで指定できます。 なお、ADO の Mode指定は、OleDbの接続文字列に含める事が可能なので、もしかしたら System.Data.OleDb でも指定できるのかも知れませんが…こちらは未検証です。
ページ単位ロックについては、内部的なロック機構なので、外部からどうこうする物では無いです。
テーブル単位のロックであれば、DAO なら OpenRecordset の options 引数にて指定可能です。 ADO の場合はわかりません。m(_ _)m
|