MSDE FunClub
Microsoft Data Engine FunClub
MSDE技術者向けメーリングリスト過去ログ[821]番
 
[TOP]>[MSDE技術者向けメーリングリスト過去ログ(821番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
MSDE2000 でロックヒント (UPDLOCK)

Date: Tue, 30 Oct 2001 13:22:28 +0900
From: 新田 則之  <who@sub.example.jp>


(有)ビジネス・サポートの新田と申します。 お世話になります。


Windows2000ServerSP2上で
MS00-092、MS01-032、MS01-041、の修正モジュールを適用して
サービスパックは未適用の SQL Server 2000 Desktop Engine (MSDE2000)
を稼動させています。

コネクションAの中でトランザクションを発生させておき

  select * from [テーブル名] with (TABLOCK, UPDLOCK)

を発行した状態で
別のコネクションBの中でトランザクションを発生させ

  select * from [テーブル名] with (TABLOCK)

を発行すると、ロック解除待ちの状態になってしまいます。

どちらのトランザクションも
「SET TRANSACTION ISOLATION LEVEL」ステートメントで分離レベルを変更していないので
既定の「READ COMMITTED」の分離レベルで動作しているはずです。

BooksOnline の「ロックのヒント」の「UPDLOCK」には

  UPDLOCK には、ほかのユーザーがデータを読むことをブロックせずに
  データを読み取ることができます。

との記述があるので、コネクションBのSelect文はブロックされないはずなのですが…

ちなみに、同様の環境で

  コネクションA … select * from [テーブル名] with (ROWLOCK, UPDLOCK)
  コネクションB … select * from [テーブル名] with (ROWLOCK)

だと、コネクションBのSelect文は無事実行されるので
この場合はBooksOnline の記述通りの動きです。


どなたか

  コネクションA … select * from [テーブル名] with (TABLOCK, UPDLOCK)
  コネクションB … select * from [テーブル名] with (TABLOCK)

で、コネクションBのSelect文を実行させる方法をご存知の方がいらっしゃいましたら
お教え頂ければ幸いです。

どうぞ、よろしくお願いいたします。




[MSDE/SQLServerに関して、今、どんなことにお困りですか?]
よろしければお困りの内容を、電子メールで教えて下さい。
質問を電子メールで作成する


[ウィンドを閉じる]

[MSDE/SQLServer FAQ ]

[MSDE / MSDE2000 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。