tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルアクセスの排他ロック
記事No3313
投稿日: 2006/03/17(Fri) 18:11
投稿者すぎた
[OSのVer]:WindowsXP    [VBのVer]:VB.NET  
はじめまして。 すぎたと申します。
早速質問させてください。

SQLSERVERであれば、with(tablockx)等で排他ロックができると言う事はわかりましたが、
VB.NETのコードからアクセスMDBに排他ロックをかける事は可能なのでしょうか?
ご教授お願いします。

[ツリー表示へ]
タイトルRe: アクセスの排他ロック
記事No3319
投稿日: 2006/03/18(Sat) 13:50
投稿者るしぇ
ブロック単位で可能です。
[Fly Me To The Access-Heaven 排他制御の罠]
hhttp://www.naboki.net/access/achell/achell_01.html

[ツリー表示へ]
タイトルRe^2: アクセスの排他ロック
記事No3320
投稿日: 2006/03/18(Sat) 17:13
投稿者すぎた
[OSのVer]:Windows    [VBのVer]:VB.NET  
> ブロック単位で可能です。
> [Fly Me To The Access-Heaven 排他制御の罠]
> hhttp://www.naboki.net/access/achell/achell_01.html

お答えありがとうございます。
教えていただいたURLを参照いたしました。
なるほど・・・色々と問題があるようですね・・・
VB.NETのコード内から排他制御を行うというのは無理ということなのでしょうか?
レコード単位ではなく、ページ単位、MDB全体などの排他制御でも構いません。
方法について、自分でも色々と検索してみましたが、情報を見つけること
ができませんでした。
もしも、ページ単位やMDB全体等なんらかのロック方法がありましたら
教えて頂きたいです。
よろしくお願いします。

[ツリー表示へ]
タイトルRe^3: アクセスの排他ロック
記事No3327
投稿日: 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

[ツリー表示へ]
タイトルRe^4: アクセスの排他ロック
記事No3329
投稿日: 2006/03/20(Mon) 10:50
投稿者すぎた
魔界の仮面弁士様
大変丁寧な回答ありがとうございました。
データベースに関してまったくの無知であった為、
大変勉強になりました。
排他ロックは、ADOを使って行うことにします。
本当にありがとうございました。
また何かありましたらよろしくお願いします。

[ツリー表示へ]