sys.dm_tran_locks
現在アクティブなロック マネージャのリソースに関する情報を返します。各行は、ロック マネージャに対して現在アクティブになっている要求を示しています。この要求は、許可されたロックまたは許可を待機しているロックに対するものです。
結果セットの列は、リソースと要求の 2 つの主要グループに分けられます。リソース グループは、ロック要求が出されているリソースを示し、要求グループはロック要求を示します。
列名 | データ型 | 説明 |
---|---|---|
resource_type |
nvarchar(120) |
リソースの種類。値は DATABASE、FILE、OBJECT、PAGE、KEY、EXTENT、RID、APPLICATION、METADATA、HOBT、ALLOCATION_UNIT のいずれかです。 |
resource_subtype |
nvarchar(120) |
resource_type のサブタイプ。親タイプのサブタイプ化されていないロックを保持せずに、サブタイプのロックを取得することができます。サブタイプが異なる場合でも、サブタイプ同士や、サブタイプ化されていない親タイプとの競合は発生しません。また、すべての種類のリソースにサブタイプが含まれるわけではありません。 |
resource_database_id |
int |
リソースのスコープとなっているデータベースの ID。ロック マネージャによって処理されるすべてのリソースのスコープは、このデータベース ID に基づいて決定されます。 |
resource_description |
nvarchar(512) |
別のリソース列からは使用できない情報のみを含むリソースの説明。 |
resource_associated_entity_id |
bigint |
リソースが関連付けられているデータベース内のエンティティの ID。この ID はリソースの種類に応じて、オブジェクト ID、Hobt ID、またはアロケーション ユニット ID になります。 |
resource_lock_partition |
int |
ロック リソースがパーティション分割されている場合の、ロック パーティションの ID。パーティション分割されていないロック リソースの値は 0 です。 |
request_mode |
nvarchar(120) |
要求のモード。許可された要求については許可モード、待機中の要求については要求中モードになります。 |
request_type |
nvarchar(120) |
要求の種類。値は LOCK です。 |
request_status |
nvarchar(120) |
この要求の現在の状態。値は GRANTED、CONVERT、または WAIT です。 |
request_reference_count |
smallint |
同じ要求元がこのリソースを要求した回数の概数。 |
request_lifetime |
int |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
request_session_id |
int |
要求を現在所有するセッション ID。所有セッション ID は、分散トランザクションとバインドされたトランザクションでは異なります。値が -2 の場合、その要求が孤立した分散トランザクションに属することを示します。値が -3 の場合、その要求が遅延復旧トランザクションに属することを示します。遅延復旧トランザクションとは、たとえば、ロールバックが正常に完了しなかったためにロールバックの復旧を遅延したトランザクションのことです。 |
request_exec_context_id |
int |
要求を現在所有するプロセスの、実行コンテキスト ID。 |
request_request_id |
int |
要求を現在所有するプロセスの要求 ID (バッチ ID)。この値は、トランザクションに対する複数のアクティブな結果セット (MARS) 接続が変わるたびに変化します。 |
request_owner_type |
nvarchar(120) |
要求を所有するエンティティの種類。ロック マネージャの要求は、さまざまな種類のエンティティで所有されます。次の値をとります。 TRANSACTION = 要求はトランザクションが所有しています。 CURSOR = 要求はカーソルが所有しています。 SESSION = 要求はユーザー セッションが所有しています。 SHARED_TRANSACTION_WORKSPACE = 要求は、トランザクション ワークスペースの共有部分が所有しています。 EXCLUSIVE_TRANSACTION_WORKSPACE = 要求は、トランザクション ワークスペースの排他部分が所有しています。 |
request_owner_id |
bigint |
この要求の特定の所有者の ID。この値は、この ID がトランザクション ID となっているトランザクションにのみ使用されます。 |
request_owner_guid |
uniqueidentifier |
この要求の特定の所有者の GUID。この値は、分散トランザクションの MS DTC GUID に対応する場合に、そのトランザクションによってのみ使用されます。 |
request_owner_lockspace_id |
nvarchar(64) |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。この値は、要求元のロック領域 ID を示します。ロック領域 ID によって、2 つの要求元の間に互換性があり、互いに競合しないモードでロックを許可できるかどうかを判断できます。 |
lock_owner_address |
varbinary(8) |
要求を追跡するときに使用される内部データ構造のメモリ アドレス。この列は sys.dm_os_waiting_tasks の resource_address 列と結合できます。 |
権限
サーバーに対する VIEW SERVER STATE 権限が必要です。
解説
要求が許可された状態とは、要求元に対してリソースのロックが許可されたことを示します。要求を待機している状態とは、その要求がまだ許可されていないことを示します。次に示す要求待機の種類は、request_status 列で返されます。
- 要求変換の状態とは、要求元がリソース要求を既に許可されており、最初の要求からさらに上の段階の許可を現在待機中であることを示します。
- 要求待機の状態とは、要求元が現在、リソースに対して許可された要求を保持していないことを示します。
sys.dm_tran_locks には内部のロック マネージャのデータ構造を基にデータが追加されるため、この情報を保持していても、通常の処理に余分なオーバーヘッドはかかりません。ビューを具現化するには、ロック マネージャの内部データ構造にアクセスする必要があります。これによって、サーバーでの通常の処理にわずかな影響が生じることがありますが、このような影響は重要ではなく、頻繁に使用されるリソースのみに影響します。このビューのデータはアクティブなロック マネージャの状態に対応しているので、データはいつでも変更される可能性があります。ロックが取得または解放されるときに、行が追加または削除されます。このビューには、履歴情報はありません。
2 つの要求は、すべてのリソース グループの行が等しい場合のみ、同じリソースに実行されます。
次のツールを使用すると、読み取り操作のロックを制御できます。
- SET TRANSACTION ISOLATION LEVEL を使用すると、セッションに対するロックのレベルを指定できます。詳細については、「SET TRANSACTION ISOLATION LEVEL (Transact-SQL)」を参照してください。
- テーブル ヒントをロックすると、FROM 句内にあるテーブルの個別の参照に対してロックのレベルを指定できます。構文と制限については、「テーブル ヒント (Transact-SQL)」を参照してください。
1 つのセッション ID で実行されているリソースには、複数のロックを許可できます。つまり、1 つのセッションで実行中の複数のエンティティが、同じリソースに対して別々のロックを保持できます。この情報は、sys.dm_tran_locks で返される request_owner_type 列と request_owner_id 列に表示されます。request_owner_type 列の値が同じになっているインスタンスが複数存在する場合、各インスタンスを区別するには request_owner_id 列を使用します。分散トランザクションでは、request_owner_type 列と request_owner_guid 列に基づいて、異なるエンティティ情報が表示されます。
たとえば、セッション S1 がテーブル 1 に共有ロックを保持しており、セッション S1 で実行中のトランザクション T1 もテーブル 1 に共有ロックを保持しているとします。この場合、sys.dm_tran_locks で返される resource_description 列には、同じリソースの 2 つのインスタンスが表示されます。request_owner_type 列には、1 つのインスタンスがセッションとして表示され、もう 1 つのインスタンスがトランザクションとして表示されます。また、resource_owner_id 列には異なる値が設定されます。
メモ : |
---|
1 つのセッションで実行する複数のカーソルは区別できないため、1 つのエンティティとして扱われます。 SQL Server データベース エンジンで使用されるロックの種類の詳細については、「データベース エンジンのロック」を参照してください。 |
セッション ID 値に関連付けられていない分散トランザクションは孤立したトランザクションで、セッション ID 値 -2 が割り当てられます。詳細については、「KILL (Transact-SQL)」を参照してください。
リソースの詳細
次の表は、resource_associated_entity_id 列に表示されるリソースの一覧です。
リソースの種類 | リソースの説明 | Resource_associated_entity_id |
---|---|---|
DATABASE |
データベースを示します。 |
適用なし |
FILE |
データベース ファイルを示します。このファイルは、データまたはログ ファイルのいずれかになります。 |
適用なし |
OBJECT |
データベース オブジェクトを示します。このオブジェクトは、データ テーブル、ビュー、ストアド プロシージャ、拡張ストアド プロシージャ、またはオブジェクト ID 付きのオブジェクトのいずれかになります。 |
Object ID |
PAGE |
データ ファイル内の 1 ページを示します。 |
HoBt ID。この値は sys.partitions.hobt_id に対応します。PAGE リソースに対し常に HoBt ID が使用できるとは限りません。HoBt ID は呼び出し元から提供される追加情報であり、呼び出し元によってはこの情報を提供できないことがあります。 |
KEY |
インデックス内の行を示します。 |
HoBt ID。この値は sys.partitions.hobt_id に対応します。 |
EXTENT |
データ ファイルのエクステントを示します。エクステントは連続する 8 ページのグループです。 |
適用なし |
RID |
ヒープ内の物理的な行を示します。 |
HoBt ID。この値は sys.partitions.hobt_id に対応します。RID リソースに対し常に HoBt ID が使用できるとは限りません。HoBt ID は呼び出し元から提供される追加情報であり、呼び出し元によってはこの情報を提供できないことがあります。 |
APPLICATION |
アプリケーション固有のリソースを示します。 |
適用なし |
METADATA |
メタデータの情報を示します。 |
適用なし |
HOBT |
ヒープまたは B-Tree を示します。これは、基本的なアクセス パス構造です。 |
HoBt ID。この値は sys.partitions.hobt_id に対応します。 |
ALLOCATION_UNIT |
インデックス パーティションなどの関連ページのセットを示します。各アロケーション ユニットは、1 つの IAM (Index Allocation Map) チェーンを対象としています。 |
アロケーション ユニット ID。この値は sys.allocation_units.allocation_unit_id に対応します。 |
次の表は、各リソースの種類に関連付けられるサブタイプの一覧です。
リソースのサブタイプ | 同期 |
---|---|
DATABASE.BULKOP_BACKUP_DB |
データベースのバックアップと一括操作。 |
DATABASE.BULKOP_BACKUP_LOG |
データベース ログのバックアップと一括操作。 |
DATABASE.DDL |
データ定義言語 (DDL) 操作と、削除などのファイル グループ操作。 |
DATABASE.STARTUP |
データベースの起動を同期するときに使用します。 |
TABLE.UPDSTATS |
テーブル上の統計の更新。 |
TABLE.COMPILE |
ストアド プロシージャのコンパイル。 |
TABLE.INDEX_OPERATION |
インデックス操作。 |
HOBT.INDEX_REORGANIZE |
ヒープまたはインデックスの再構成操作。 |
HOBT.BULK_OPERATION |
SNAPSHOT、READ COMMITTED、および行バージョンを使用する READ COMMITTED の分離レベルでの、ヒープが最適化された一括読み込み操作と同時実行スキャン。 |
ALLOCATION_UNIT.PAGE_COUNT |
遅延削除操作での、アロケーション ユニットのページ数の統計。 |
METADATA.INDEXSTATS |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.STATS |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.XML_COLLECTION |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SEQUENCE |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.QNAME |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ASSEMBLY_CLR_NAME |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ASSEMBLY_TOKEN |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ASSEMBLY |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.PARTITION_FUNCTION |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.DATA_SPACE |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.USER_TYPE |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.DB_PRINCIPAL_SID |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.DATABASE_PRINCIPAL |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SCHEMA |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.XML_COMPONENT |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SERVER |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.INSTANTIATED_TYPE_HASH |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.DB_MIRRORING_SESSION |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ENDPOINT |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SECURITY_CACHE |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.DB_MIRRORING_WITNESS |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.CREDENTIAL |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SECURITY_DESCRIPTOR |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SERVICE_BROKER_GUID |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.CONVERSTATION_ENDPOINT_RECV |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.DATABASE |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.CONVERSATION_GROUP |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ENDPOINT_WEBMETHOD |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ASSYMMETRIC_KEY |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.FULLTEXT_CATALOG |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.FULLTEXT_INDEX |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SERVER_PRINCIPAL |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ROUTE |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.MESSAGE |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.QNAME_HASH |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SERVICE_MESSAGE_TYPE |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.CONVERSTATION_ENDPOINT_SEND |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.CERTIFICATE |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SYMMETRIC_KEY |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.XML_INDEX_QNAME |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SERVICE_CONTRACT |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.REMOTE_SERVICE_BINDING |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SERVICE |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.METADATA_CACHE |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
次の表は、各リソースの種類に対する resource_description 列の形式です。
リソース | 形式 | 説明 |
---|---|---|
DATABASE |
適用なし。 |
データベース ID は resource_database_id 列で既に使用可能になっています。 |
FILE |
<file_id> |
このリソースが示すファイルの ID。 |
OBJECT |
<object_id> |
このリソースが示すオブジェクトの ID。テーブルだけでなく、sys.objects に一覧表示されるあらゆるオブジェクトが対象になります。 |
PAGE |
<file_id>:<page_in_file> |
このリソースが示すページの、ファイルおよびページ ID。 |
KEY |
<hash_value> |
このリソースが示す行のキー列のハッシュ。 |
EXTENT |
<file_id>:<page_in_files> |
このリソースが示すエクステントの、ファイルおよびページ ID。エクステント ID は、そのエクステント内にある最初のページのページ ID と同じになります。 |
RID |
<file_id>:<page_in_file>:<row_on_page> |
このリソースが示すページ ID と、行の行 ID。関連するオブジェクト ID が 99 の場合、このリソースは、IAM チェーンの最初の IAM ページにある、8 つの混合ページ スロットのいずれかを表すことに注意してください。 |
APPLICATION |
<DbPrincipalId>:<upto 32 characters>:(<hash_value>) |
アプリケーションのロック リソースのスコープに使用する、データベース プリンシパルの ID。アプリケーションのロック リソースに対応する、最大 32 文字のリソース文字列も含まれます。場合によっては、完全な文字列が使用できず、2 文字のみが表示されることがあります。この動作は、データベース復旧時、復旧処理の一部として再取得されるアプリケーション ロックに関してのみ発生します。ハッシュ値は、このアプリケーション ロック リソースに対応する、完全リソース文字列のハッシュを示します。 |
HOBT |
適用なし。 |
resource_associated_entity_id として含まれる HoBt ID。 |
ALLOCATION_UNIT |
適用なし。 |
resource_associated_entity_id として含まれるアロケーション ユニット ID。 |
METADATA.SEQUENCE |
$seq_type = S, object_id = O |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.STATS |
object_id = O, stats_id = S |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SCHEMA |
schema_id = S |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.INDEXSTATS |
object_id = O, index_id or stats_id = I |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.DATABASE_PRINCIPAL |
principal_id = P |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.DB_PRINCIPAL_SID |
$hash = H1:H2:H3 |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.USER_TYPE |
user_type_id = U |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.DATA_SPACE |
data_space_id = D |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.PARTITION_FUNCTION |
function_id = F |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.PARTITION_FUNCTION |
function_id = F |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ASSEMBLY |
assembly_id = A |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ASSEMBLY_TOKEN |
assembly_id = A, $token_id = T |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ASSEMBLY_CLR_NAME |
$qname_id = Q |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.QNAME |
$qname_id = Q |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.XML_COLLECTION |
xml_collection_id = X |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.XML_COMPONENT |
xml_component_id = X |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.QNAME_HASH |
$qname_scope_id = Q, $qname_hash = H |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.XML_INDEX_QNAME |
object_id = O, $qname_id = Q |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SERVICE_MESSAGE_TYPE |
message_type_id = M |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SERVICE_CONTRACT |
service_contract_id = S |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SERVICE |
service_id = S |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.REMOTE_SERVICE_BINDING |
remote_service_binding_id = R |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ROUTE |
route_id = R |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.FULLTEXT_INDEX |
object_id = O |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.FULLTEXT_CATALOG |
fulltext_catalog_id = F |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.CONVERSATION_GROUP |
conversation_group_id = C |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.CONVERSTATION_ENDPOINT_SEND |
$hash = H1:H2:H3 |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.CONVERSTATION_ENDPOINT_RECV |
$hash = H1:H2:H3 |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SYMMETRIC_KEY |
symmetric_key_id = S |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.CERTIFICATE |
certificate_id = C |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ASSYMMETRIC_KEY |
asymmetric_key_id = A |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.DATABASE |
database_id = D |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.MESSAGE |
message_id = M |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SERVER_PRINCIPAL |
principal_id = P |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SERVER |
server_id = S |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ENDPOINT |
endpoint_id = E |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.ENDPOINT_WEBMETHOD |
$hash = H1:H2:H3 |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.DB_MIRRORING_SESSION |
database_id = D |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.DB_MIRRORING_WITNESS |
$hash = H1:H2:H3 |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SERVICE_BROKER_GUID |
$hash = H1:H2:H3 |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SERVICE_BROKER_GUID |
$hash = H1:H2:H3 |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.CREDENTIAL |
credential_id = C |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.INSTANTIATED_TYPE_HASH |
user_type_id = U, hash = H1 |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SECURITY_DESCRIPTOR |
sd_id = S |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.SECURITY_CACHE |
$hash = H1:H2:H3 |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
METADATA.METADATA_CACHE |
$hash = H1:H2:H3 |
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。 |
例
A. 別のツールで sys.dm_tran_locks を使用する
次のコード例では、更新操作が別のトランザクションによってブロックされたシナリオを処理します。sys.dm_tran_locks と追加ツールを使用すると、リソースのロックに関する情報を取得できます。
USE tempdb;
GO
-- Create test table and index.
CREATE TABLE t_lock
(
c1 int, c2 int
);
GO
CREATE INDEX t_lock_ci on t_lock(c1);
GO
-- Insert values into test table
INSERT INTO t_lock VALUES (1, 1);
INSERT INTO t_lock VALUES (2,2);
INSERT INTO t_lock VALUES (3,3);
INSERT INTO t_lock VALUES (4,4);
INSERT INTO t_lock VALUES (5,5);
INSERT INTO t_lock VALUES (6,6);
GO
-- Session 1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN TRAN
SELECT c1
FROM t_lock
WITH(holdlock, rowlock);
-- Session 2
BEGIN TRAN
UPDATE t_lock SET c1 = 10
次のクエリでは、ロックの情報を表示します。<dbid>
の値は、sys.databases からの database_id に置き換える必要があります。
SELECT resource_type, resource_associated_entity_id,
request_status, request_mode,request_session_id,
resource_description
FROM sys.dm_tran_locks
WHERE resource_database_id = <dbid>
次のクエリでは、前のクエリからの resource_associated_entity_id
を使用してオブジェクトの情報を返します。このクエリは、オブジェクトを含むデータベースに接続して実行する必要があります。
SELECT object_name(object_id), *
FROM sys.partitions
WHERE hobt_id=<resource_associated_entity_id>
次のクエリでは、ブロッキング情報を表示します。
SELECT
t1.resource_type,
t1.resource_database_id,
t1.resource_associated_entity_id,
t1.request_mode,
t1.request_session_id,
t2.blocking_session_id
FROM sys.dm_tran_locks as t1
INNER JOIN sys.dm_os_waiting_tasks as t2
ON t1.lock_owner_address = t2.resource_address;
リソースを解放するには、トランザクションをロールバックします。
-- Session 1
ROLLBACK;
GO
-- Session 2
ROLLBACK;
GO
B. セッション情報を、オペレーティング システムのスレッドにリンクする
次の例では、セッション ID と Windows のスレッド ID を関連付ける情報を返します。スレッドのパフォーマンスは、Windows パフォーマンス モニタで監視できます。このクエリでは、現在休止しているセッション ID は返されません。
SELECT STasks.session_id, SThreads.os_thread_id
FROM sys.dm_os_tasks AS STasks
INNER JOIN sys.dm_os_threads AS SThreads
ON STasks.worker_address = SThreads.worker_address
WHERE STasks.session_id IS NOT NULL
ORDER BY STasks.session_id;
GO
参照
関連項目
sys.dm_tran_database_transactions
動的管理ビューと動的管理関数
トランザクション関連の動的管理ビューおよび関数