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

 
Re: MSDE2000 でロックヒント (UPDLOCK)

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


新田です。

谷さん、ご回答ありがとうございます。


Kenji Tani wrote:

> 「UPDLOCK は、必要に応じて自動的に排他ロックに変換される」
> というのが、Inside SQL Server 7.0 に記載されていました。
> # 必要に応じてというところが怪しいですね。

そうですか…
SQL Server 2000 BooksOnline で探してみましたが
そのような記述は見つかりませんでした。

実は、こちらに投稿する前に
マイクロソフトのサポートニュースグループ(microsoft.private.jp.vap.sqlserver)
に問い合わせてみたのですが、全く何も答えてもらえませんでしたので
マイクロソフトとしても公にされたくないような動作なのかもしれませんね。

「アーキテクチャ徹底解説 Microsoft SQL Server 2000」
(原書:Inside Microsoft SQL Server 2000)
という書籍が発行されているようなので
「Inside SQL Server 7.0」と同様の記述があるかどうか確認してみます。


> 「ロックヒントは、セッションの分離レベルを無効にする」
> との記載が、Books Online にあります。

確かに、SQL Server 2000 BooksOnline の「ロックのヒント」の箇所に
「ロック ヒントは、セッションの現在のトランザクション分離レベルを無効にします。」
という記述があります。

ただ、BooksOnline の「FROM」の箇所には

  粒度ヒント:PAGLOCK、NOLOCK、ROWLOCK、TABLOCK、TABLOCKX
  分離レベル ヒント:HOLDLOCK、NOLOCK、READCOMMITTED、REPEATABLEREAD、SERIALIZABLE

という記述があるので、私の方は
「トランザクション分離レベルを無効になるのは、分離レベル ヒントを指定したときで
 粒度ヒントだけの指定では、トランザクション分離レベルは無効にはならない」
と解釈していました。

ですので、単に

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

という記述だけなら、トランザクション分離レベルは無効にならず
分離レベルが既定の「READ COMMITTED」で動作しているならば
たとえ他セッションでテーブルが(TABLOCK, UPDLOCK)でロックされていても
「select * from [テーブル名] with (TABLOCK)」
でテーブルを読み込めると思っていたのですが、そうではないのでしょうか?



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


[ウィンドを閉じる]

[MSDE/SQLServer FAQ ]

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

MSDE TOP ページに移動する

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