SQL Serverのデータをレコードロックしたいのですがうまくいきません。
まずこちらを参考にしました。
https://www.petitmonte.com/bbs/answers?question_id=4374
ただ最終的にいけたのかが記載ないので結果が分かりませんが。
CursorLocation:clUseServer
CursorType:ctKeyset
LockType:ltPessimistic
にしています。
まずクライアントAからADOTable.LocateしてEditモードにしてます。
そしてクライアントBから同じレコードをLocateするとタイムアウトまで止まっているのでAのロックが効いてるようです。
しかしクライアントBから別のレコードをLocateすると同じようにタイムアウトが発生してしまいます。
これだと複数クライアントから処理ができない状態です。
いろいろ調べてもこうすればいけるという情報は見つけられませんでした。
もしかしてテーブルロックしか実現できないのでしょうか?
SQL Server 2008
Delphi2007
以前の事なので現在はどうか分かりませんが、レコードロック自体はできました。しかし、リソースが足りなくなると勝手にテーブルロックに代えてしまうため、大量のアクセスまたは多数からのアクセスが発生するとテーブルロックとなってしまい処理が遅くなり困ったことがありました。
その時の対処としてはリソースを十分に増やしてやることと、DBアクセス回数を減らしたりして対処した事を覚えています。解決にはならなくて申し訳ありませんが、参考までに。
むるしーさん、レコードロックいけましたか!
しかし動きが不安定となるとシステムとしては怖いですね。
とりあえずレコードロックは諦めて別の方法でシステム運用を考えようと思います。
ありがとうございました。
ツイート | ![]() |