MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
テーブルのロック状態を取得する方法(SQL Server)のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
テーブルのロック状態を取得する方法(SQL Server)
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == SQL Serverにおいて、テーブルのロック状態を調べるSQL文を記載する。<br> <br><br> == ロック状態を取得するSQL文 == ロック状態を取得するには、以下のSQL文を実行すれば取得できる。<br> <source lang="sql"> SELECT resource_type AS type, resource_associated_entity_id as entity_id, (CASE WHEN resource_type = 'OBJECT' THEN OBJECT_NAME( resource_associated_entity_id ) ELSE (SELECT OBJECT_NAME( OBJECT_ID ) FROM sys.partitions WHERE hobt_id=resource_associated_entity_id) END) AS object_name, request_mode AS request_mode, request_type AS request_type, request_status AS request_status, request_session_id AS session_id FROM sys.dm_tran_locks WHERE resource_type <> 'DATABASE' ORDER BY request_session_id </syntaxhighlight> <br> 実行結果の例 type entity_id object_name mode type status session_id OBJECT 90123845 test_table IS LOCK GRANT 51 <br><br> == ロックの種類 == ロックの種類を、下表に示す。<br> <br> <center> {| class="wikitable" |- ! ロックのモード !! ロックの種類 !! 説明 |- | S || 共有ロック || 他のトランザクションからの読込は可能で、更新は不可となる。 |- | X || 排他ロック || 他のトランザクションからの読込・更新が共に不可となる。<br>INSERT、UPDATE、DELETEを実行するとこのロックになる。 |- | U || 更新ロック || 他のトランザクションからの読込は可能で、更新は不可となる。<br>SELECTでWITH(UPDLOCK)を指定するとこのロックになる。 |- | IS || インテント共有 || 下位の階層に位置するリソースの一部に対し、<br>要求されているかかけられている共有ロックを保護する。 |- | IX || インテント排他 || 下位の階層に位置するリソースの一部に対し、<br>要求されているかかけられている排他ロックを保護する。<br>IXはISのスーパーセットであり、下位のリソースに対する共有ロックの要求を保護する。 |- | SIX || インテント排他の共有 || 下位の階層に位置するすべてのリソースに対し、<br>要求されているか掛けられている共有ロックを保護し、下位のリソースの一部のインテント排他ロックを保護する。<br>上位リソースで同時実行しているISロックは可能である。<br><br>例えば、テーブルに対しSIXロックを掛けると、変更中のページにインテント排他ロックが、<br>変更中の行に排他ロックが掛かる。<br><br>1つのリソースに対しては、1度に1つのSIXロックしか掛けられない。<br>その結果、他のトランザクションによってリソースが更新されることはなくなるが、<br>他のトランザクションはテーブルレベルのISロックをかけることで下位のリソースを読み取ることができる。 |- | IU || インテント更新 || 下位の階層に位置するすべてのリソースに対し、要求されているかかけられている更新ロックを保護する。<br>IUロックはページリソースに対してのみ使用する。<br>更新操作が発生すると、IUロックはIXロックに変換される。 |- | SIU || 共有インテント更新 || SロックとIUロックを個別に掛けるか、同時に掛けるかして組み合わせたものである。<br>例えば、トランザクションでPAGLOCKヒントを指定してクエリを実行してから更新操作を実行する場合、<br>PAGLOCKヒントを指定したクエリでSロックを掛け、更新操作でIUロックを掛ける。 |- | UIX || 更新インテント排他 || UロックとIXロックを個別に掛けるか、同時に掛けるかして組み合わせたものである。 |} </center> <br><br> __FORCETOC__ [[カテゴリ:SQL_Server]]
テーブルのロック状態を取得する方法(SQL Server)
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse