- - PR -
SQL Server の排他ロックに関して(SELECT)
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-04-16 14:17
with (READUNCOMMITTED) や with (NOLOCK)が指定されても?
ありえません。 ロックヒントを指定したときとそうでないときで、 SQLServerの処理が違うの当然です。 でも、タイミングが違うだけで結果は同じです。 reader2 = command2.ExecuteReader(); // ※ここで取得できないようにしたい!!!! reader2.Read(); //これを追加 で確認してみて下さい。 BooksOnlineはもちろん、 .NETエンタープライズ Webアプリケーション開発技術大全 Vol.5 トランザクション設計編に分かりやすく解説されています。 (分かりやすくは主観です) | ||||||||||||||||
|
投稿日時: 2005-04-17 16:49
nanbuさんへ
詳細な説明は省きますが、SQLに関してはF/Wで様々な制御がされており、このような指定はできないように制御しているので大丈夫です。 いろいろ有難うございました。 本題のほうですが、結論として以下のような勘違いでした。申し訳ないです。 未記入さんへ
「ようです」というのは別にSET LOCK_TIMEOUT自体に関してではなく、動作に関して述べただけです。SET LOCK_TIMEOUTに関して調べてないわけでも認識不足なわけでもありません。ただちょっと混乱してよくわからない書き方をしてしまいました。
その通りでした。 取得確認方法ですが、LOCKOUTを指定しない場合にSqlCommandのExceptionをキャッチしていたのですが、 LOCKOUTを指定した場合にExceptionが発生しないので、取得できてしまっていると勘違いし、混乱してしまっていました。
あまりこういうことを言いたくはないですが、特にあなたが説明する気になれるかどうかを書いていただく必要はないです。 | ||||||||||||||||
|
投稿日時: 2005-04-17 18:45
認識不足でしょう。ちゃんとロックタイムアウトについて理解しているなら↓こんな発言は出てこない。
それと、認識が足りない・おかしいのはロックタイムアウトに関する点だけではない。排他ロックについても十分に理解できていないから、適切な確認方法が取れずに変な勘違いをするんだよ。普通は機能を知っていて結果でそれを確認するものだけど、あなたの行動は「結果を見て機能を推測している」ように思える。
言いたくないなら言わなければいいのに。結局のところ「言い返さずにはいられない」んでしょ。本当に恥ずかしい人だなあ。 | ||||||||||||||||
|
投稿日時: 2005-04-17 21:16
だから、認識はあっていたのですが、取得していると勘違いしていたために混乱して、自分の認識が間違っていたのかなと思ったんですよ。 別に言い訳するほどのことではないですが、言い方が腹立ったので言い返してみました。
これについては、別に認識が正しいなんて言った覚えはないです。 いろんなサイトを見ていろんな記述があって良く分からなくなったので、質問したまでです。
本来なら言いたくないけど、言われたから言い返したまでです。 顔が見えないからって挑戦的な書き方をするあなたの方が恥ずかしいと思いますが? まあこんなことを書いてしまった私も同レベルですが。 と、こんなことを言い合う場ではないので、これで止めておきます。 結果的に解決することができました。 お二人ともありがとうございました。 | ||||||||||||||||
|
投稿日時: 2005-04-18 23:44
もう見てないかもしれないけど。 言葉の是非はともかく、未記入氏の指摘事項は、真摯に受け止めた方がいいよ。nanbuさんとのやりとりにしても、伝えるべきことを伝えず、誤解させているわけだし。 自分を正しく伝えることができない、ということは、いろいろなところで損をします。たとえば、プレゼンテーション。「これくらいはわかってくれるだろう」と思って省いたことで、失敗することもあり得ます。 今回のことは、あなたがわかっているつもりで、わかっていなかったことが原因なんだし。 |