Date: Tue, 30 Oct 2001 22:08:44 +0900
From: 新田 則之 <who@sub.example.jp>
新田です。
谷さん、大変詳細な調査をして頂き、本当にありがとうございます。
Kenji Tani wrote:
> > select * from authors with (TABLOCK, UPDLOCK)
> > ----
> > Process 54 acquiring S lock on TAB: 5:1977058079 []
> > (class bit0 ref1) result: OK
> > Process 54 acquiring X lock on TAB: 5:1977058079 []
> > (class bit2000000 ref1) result: OK
> >
> > 上記の2行(改行で4行)が、クエリ終了後だと思われます。
>
> ちなみに、コミットはしていません。
> コミットした場合は、現れませんでした。
> # X lock Release を期待していたのですけどねぇ。
>
> トレースフラグが違うのかな?
> # フラグの詳しい情報教えて欲しい!
勉強不足で、「トレースフラグ」の結果の意味を
今のところ詳しく把握できていません。
(せっかく調べて頂いたのにスミマセン…)
これから「トレースフラグ」について勉強します。
ところで、1つまえの投稿で
> 故に、SELECT 文が処理されている間なら、
> 別のセッションのSELECT文の処理が行えるかもしれないですね。
と言われていましたが、これは
「トランザクション開始後にSELECT文を処理した場合
そのトランザクションが終了するまでは
別セッションのSELECT文の処理が行えるかもしれない」
という意味で捉えてもよろしいでしょうか?
参考になるかどうかわかりませんが、実は今回の現象は
1、コネクションA でトランザクション開始
2、コネクションA で select * from [テーブル名] with (TABLOCK, UPDLOCK) を実行
3、2の処理が完了したことを確認(1のトランザクションはまだ生きている状態)
4、コネクションB で select * from [テーブル名] with (TABLOCK) を実行
という処理の順序で実施した場合
結局、最後の「4」の処理がロック解除待ちの状態になってしまうのです。
最終的な目標は、上記の4の処理を無事完了させることなのですが…
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|