- ベストアンサー
SQLServerロックについて
お世話になります。 SQLServer7.0をつかっております。 プログラムやハード環境は何にも変わらないのですが、急にロックが頻発するようになりました。 複数ユーザーが同時に使用しているので、ロックがかかるのは普通の事なんですが、SQL EnterPrise Manager で確認すると、ブロッキングがなく、お互いがお互いをブロックしているという形になっており、手動で強制終了するしかない状況です。 お互いがの場合はデッドロックになり、自動で強制終了されると思うのですが、それも起こりません。 何故、デッドロックにならないのか分からず悩んでおります。 何かの設定なのでしょうか?サーバーの再起動をしてみた方が良いでしょうか?アドバイスお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>お互いがの場合はデッドロックになり、自動で強制終了されると思うのですが、それも起こりません。 ご質問の趣旨は、デッドロックを再現させる環境を作ってみたいということで宜しいのでしょうか? それともデッドロックをできるだけ回避したいということなのでしょうか? 「何故、デッドロックにならないのか分からず悩んでおります」という質問を拝見すると、どちらとも受け取れたので・・・ まずは一度、sp_lock というストアドがありますので、それでロック状況を確認してみては如何でしょうか? sp_lock の内容が若干見ずらい点があるので、 http://www.atmarkit.co.jp/fnetwork/rensai/sql28/sql1.html に掲載されているやり方で確認して頂いてもOKなので・・・ いずれにしてもデッドロックになりうる状況下にあるのか?がわからないと、欲しい回答が得られないような気がします。 ご確認ください。
その他の回答 (1)
- khazad-lefty
- ベストアンサー率44% (296/668)
とりあえず、根本的な原因究明とかは ロックの詳細情報で確認してどうにかするしかないと思うので、 で、根拠なしなことを言うと、 7.0では、デッドロックの判断が甘くて、DB側で「デッドロック」と認識できていないのかも知れないですね。
お礼
おはようございます。 お返事ありがとうございます。 そういうこともあるんでしょうか。 ロックの現象で統計をとってみると、 やはりサーバーの動きが悪いみたいで、 再起動をしようと思います。
お礼
お返事ありがとうございます。 分かりずらくてすいません。 今までは、ブロッキングとブロックしているが存在して、 ブロッキングのユーザーが原因でロックをかけているんだなと分かったんですが、お互いがブロックしている状態になってしまい、どれが原因かが分からない状況です。 このように、手動で強制終了するしかなくなってしまう現象は 普通に存在するのかが知りたいです。 ロックが起こるのはクエリの作り方や、データベース環境によって いろいろあると思うのですが。