SQL Serverでレコードロックしたい

解決


ロック  2009-11-24 22:51:46  No: 36247

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


むるしー  2009-11-27 00:02:21  No: 36248

以前の事なので現在はどうか分かりませんが、レコードロック自体はできました。しかし、リソースが足りなくなると勝手にテーブルロックに代えてしまうため、大量のアクセスまたは多数からのアクセスが発生するとテーブルロックとなってしまい処理が遅くなり困ったことがありました。
その時の対処としてはリソースを十分に増やしてやることと、DBアクセス回数を減らしたりして対処した事を覚えています。解決にはならなくて申し訳ありませんが、参考までに。


ロック  2009-11-30 20:33:47  No: 36249

むるしーさん、レコードロックいけましたか!
しかし動きが不安定となるとシステムとしては怖いですね。
とりあえずレコードロックは諦めて別の方法でシステム運用を考えようと思います。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加