sys.dm_tran_locks (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

SQL Serverで現在アクティブなロック マネージャー リソースに関する情報を返します。 各行は、ロック マネージャーに対して現在アクティブになっている要求を示しています。この要求は、許可されたロックまたは許可を待機しているロックに対するものです。

結果セットの列は、リソースと要求の 2 つの主要グループに分けられます。 リソース グループは、ロック要求が出されているリソースを示し、要求グループはロック要求を示します。

注意

Azure Synapse Analytics または Analytics Platform System (PDW) からこれを呼び出すには、sys.dm_pdw_nodes_tran_locksという名前を使用します。 この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。

列名 データ型 説明
resource_type nvarchar(60) リソースの種類。 値は DATABASE、FILE、OBJECT、PAGE、KEY、EXTENT、RID、APPLICATION、METADATA、HOBT、ALLOCATION_UNIT のいずれかです。
resource_subtype nvarchar(60) resource_type のサブタイプ。 親タイプのサブタイプ化されていないロックを保持せずに、サブタイプのロックを取得することができます。 サブタイプが異なる場合でも、サブタイプどうしや、サブタイプ化されていない親タイプとの競合は発生しません。 また、すべての種類のリソースにサブタイプが含まれるわけではありません。
resource_database_id int リソースのスコープとなっているデータベースの ID。 ロック マネージャーによって処理されるすべてのリソースのスコープは、このデータベース ID に基づいて決定されます。
resource_description nvarchar (256) 別のリソース列からは使用できない情報のみを含むリソースの説明。
resource_associated_entity_id bigint リソースが関連付けられているデータベース内のエンティティの ID。 この ID はリソースの種類に応じて、オブジェクト ID、Hobt ID、またはアロケーション ユニット ID になります。
resource_lock_partition Int ロック リソースがパーティション分割されている場合の、ロック パーティションの ID。 パーティション分割されていないロック リソースの値は 0 です。
request_mode nvarchar(60) 要求のモード。 許可された要求については許可モード、待機中の要求については要求中モードになります。

NULL = リソースへのアクセス権は付与されません。 プレースホルダーとして機能します。

Sch-S (スキーマの安定性) = スキーマ要素に対するスキーマの安定性ロックがセッションによって保持されている間、テーブルやインデックスなどのスキーマ要素が削除されないようにします。

Sch-M (スキーマの変更) = 指定されたリソースのスキーマを変更するセッションで保持する必要があります。 指定されたオブジェクトを他のセッションが参照しないようにします。

S (共有) = 保持セッションには、リソースへの共有アクセスが許可されます。

U (更新) = 最終的に更新される可能性のあるリソースに対して取得された更新ロックを示します。 これは、後で更新される可能性があるリソースが複数のセッションによってロックされるとき、一般的な形式のデッドロックが発生するのを防止するために使用します。

X (排他) = 保持セッションには、リソースへの排他的アクセスが許可されます。

IS (Intent Shared) = ロック階層内の一部の下位リソースに S ロックを配置する意図を示します。

IU (意図の更新) = ロック階層内の一部の下位リソースに U ロックを配置する意図を示します。

IX (Intent Exclusive) = ロック階層内の一部の下位リソースに X ロックを配置する意図を示します。

SIU (Shared Intent Update) = ロック階層内の下位リソースに対する更新ロックを取得することを目的としたリソースへの共有アクセスを示します。

SIX (共有インテント排他) = ロック階層内の下位リソースに対して排他ロックを取得する目的で、リソースへの共有アクセスを示します。

UIX (更新インテント排他) = ロック階層内の下位リソースに対して排他ロックを取得する目的で、リソースの更新ロック ホールドを示します。

BU = 一括操作で使用されます。

RangeS_S (共有Key-Rangeと共有リソース ロック) = シリアル化可能な範囲スキャンを示します。

RangeS_U (共有Key-Rangeと更新リソース ロック) = シリアル化可能な更新スキャンを示します。

RangeI_N (Insert Key-Range and Null Resource lock) = インデックスに新しいキーを挿入する前に範囲をテストするために使用されます。

RangeI_S = RangeI_N ロックと S ロックの重複によって作成される変換ロックKey-Range。

RangeI_U = RangeI_Nと U ロックの重なりによって作成される変換ロックKey-Range。

RangeI_X = RangeI_Nと X ロックの重なりによって作成された変換ロックKey-Range。

RangeX_S = RangeI_NとRangeS_Sの重複によって作成される変換ロックKey-Range。 ロック。

RangeX_U = RangeI_NロックとRangeS_U ロックの重なりによって作成される変換ロックKey-Range。

RangeX_X (排他Key-Rangeと排他リソース ロック) = これは、範囲内のキーを更新するときに使用される変換ロックです。
request_type nvarchar(60) 要求の種類。 値は LOCK です。
request_status nvarchar(60) この要求の現在の状態。 指定できる値は、GRANTED、CONVERT、WAIT、LOW_PRIORITY_CONVERT、LOW_PRIORITY_WAIT、またはABORT_BLOCKERSです。 低優先度の待機と中止ブロッカーの詳細については、「ALTER INDEX (Transact-SQL)」「low_priority_lock_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(60) 要求を所有するエンティティの種類。 ロック マネージャーの要求は、さまざまな種類のエンティティで所有されます。 次のいずれかの値になります。

TRANSACTION = 要求はトランザクションが所有しています。

CURSOR = 要求はカーソルが所有しています。

SESSION = 要求はユーザー セッションが所有しています。

SHARED_TRANSACTION_WORKSPACE = 要求は、トランザクション ワークスペースの共有部分が所有しています。

EXCLUSIVE_TRANSACTION_WORKSPACE = 要求は、トランザクション ワークスペースの排他部分が所有しています。

NOTIFICATION_OBJECT = 要求は内部SQL Server コンポーネントによって所有されます。 このコンポーネントは、別のコンポーネントがロックの取得を待機しているときに、そのことを通知するようにロック マネージャーに要求しました。 FileTable 機能は、この値を使用するコンポーネントです。

メモ: 作業スペースは、参加セッションのロックを保持するために内部的に使用されます。
request_owner_id bigint この要求の特定の所有者の ID。

トランザクションが要求の所有者である場合、この値にはトランザクション ID が含まれます。

FileTable が要求の所有者である場合、request_owner_id には次のいずれかの値が含まれます。
  • -4 : FileTable がデータベース ロックを取得しました。
  • -3 : FileTable がテーブル ロックを取得しました。
  • その他の値 : 値はファイル ハンドルを表します。 この値は、動的管理ビュー sys.dm_filestream_non_transacted_handles(Transact-SQL) にもfcb_idとして表示されます。
request_owner_guid uniqueidentifier この要求の特定の所有者の GUID。 この値は、分散トランザクションの MS DTC GUID に対応する場合に、そのトランザクションによってのみ使用されます。
request_owner_lockspace_id nvarchar(32) 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。 この値は、要求元のロック領域 ID を示します。 ロック領域 ID によって、2 つの要求元の間に互換性があり、互いに競合しないモードでロックを許可できるかどうかを判断できます。
lock_owner_address varbinary(8) 要求を追跡するときに使用される内部データ構造のメモリ アドレス。 この列は sys.dm_os_waiting_tasksresource_address 列と結合できます。
pdw_node_id int 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW)

このディストリビューションがオンになっているノードの識別子。

アクセス許可

SQL Server と SQL Managed Instance では、VIEW SERVER STATE アクセス許可が必要です。

SQL Database BasicS0、および S1 のサービス目標、およびエラスティック プール内のデータベースの場合、サーバー管理者アカウント、Azure Active Directory 管理者アカウント、または ##MS_ServerStateReader##サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE アクセス許可または ##MS_ServerStateReader## サーバー ロールのメンバーシップのいずれかが必要です。

SQL Server 2022 以降のアクセス許可

サーバーに対する VIEW SERVER PERFORMANCE 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 つのエンティティとして扱われます。

セッション ID 値に関連付けられていない分散トランザクションは孤立したトランザクションで、セッション ID 値 -2 が割り当てられます。 詳細については、「KILL (Transact-SQL)」を参照してください。

Locks

ロックは、複数のトランザクションで同じ SQL Server リソースが同時に使用されるのを防ぐために、トランザクション中に読み取られたり変更されたりする行などにかけられます。 たとえば、あるトランザクションによってテーブルの行に排他 (X) ロックがかけられると、他のトランザクションはロックが解除されるまでその行を変更できません。 ロックを最小限にとどめるとコンカレンシーが向上し、パフォーマンスが向上します。

リソースの詳細

次の表は、resource_associated_entity_id 列に表示されるリソースの一覧です。

リソースの種類 リソースの説明 Resource_associated_entity_id
DATABASE データベースを示します。 該当なし
FILE データベース ファイルを示します。 このファイルは、データまたはログ ファイルのいずれかになります。 該当なし
OBJECT データベース オブジェクトを示します。 このオブジェクトは、データ テーブル、ビュー、ストアド プロシージャ、拡張ストアド プロシージャ、またはオブジェクト ID 付きのオブジェクトのいずれかになります。 オブジェクト 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 に対応します。

Note

SQL Server のドキュメントでは、一般にインデックスに関して B ツリーという用語が使用されます。 行ストア インデックスで、SQL Server によって B+ ツリーが実装されます。 これは、列ストア インデックスやメモリ内データ ストアには適用されません。 詳細については、「SQL Server のインデックスのアーキテクチャとデザイン ガイド」を参照してください。

次の表は、各リソースの種類に関連付けられるサブタイプの一覧です。

リソースのサブタイプ 同期
ALLOCATION_UNIT.BULK_OPERATION_PAGE 一括操作で使用されるあらかじめ割り当てられたページ。
ALLOCATION_UNIT.PAGE_COUNT 遅延削除操作での、アロケーション ユニットのページ数の統計。
DATABASE.BULKOP_BACKUP_DB データベースのバックアップと一括操作。
DATABASE.BULKOP_BACKUP_LOG データベース ログのバックアップと一括操作。
DATABASE.CHANGE_TRACKING_CLEANUP 変更の追跡のクリーンアップ タスク。
DATABASE.CT_DDL データベースおよびテーブルレベルの変更の追跡の DDL 操作。
DATABASE.CONVERSATION_PRIORITY CREATE BROKER PRIORITY などの Service Broker のメッセージ交換の優先度操作。
DATABASE.DDL データ定義言語 (DDL) 操作と、削除などのファイル グループ操作。
DATABASE.ENCRYPTION_SCAN TDE 暗号化の同期。
DATABASE.PLANGUIDE プラン ガイドの同期。
DATABASE.RESOURCE_GOVERNOR_DDL ALTER RESOURCE POOL などのリソース ガバナー操作の DDL 操作。
DATABASE.SHRINK データベースの圧縮操作。
DATABASE.STARTUP データベースの起動を同期するときに使用します。
FILE.SHRINK ファイルの圧縮操作。
HOBT.BULK_OPERATION SNAPSHOT、READ COMMITTED、および行のバージョン管理を使用する READ COMMITTED の分離レベルでの、ヒープが最適化された一括読み込み操作と同時実行スキャン。
HOBT.INDEX_REORGANIZE ヒープまたはインデックスの再構成操作。
OBJECT.COMPILE ストアド プロシージャのコンパイル。
OBJECT.INDEX_OPERATION インデックス操作。
OBJECT.UPDSTATS テーブル上の統計の更新。
METADATA.ASSEMBLY 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.ASSEMBLY_CLR_NAME 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.ASSEMBLY_TOKEN 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.ASYMMETRIC_KEY 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.AUDIT 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.AUDIT_ACTIONS 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.AUDIT_SPECIFICATION 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.AVAILABILITY_GROUP 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CERTIFICATE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CHILD_INSTANCE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.COMPRESSED_FRAGMENT 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.COMPRESSED_ROWSET 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CONVERSTATION_ENDPOINT_RECV 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CONVERSTATION_ENDPOINT_SEND 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CONVERSATION_GROUP 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CONVERSATION_PRIORITY 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CREDENTIAL 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CRYPTOGRAPHIC_PROVIDER 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.DATA_SPACE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.DATABASE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.DATABASE_PRINCIPAL 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.DB_MIRRORING_SESSION 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.DB_MIRRORING_WITNESS 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.DB_PRINCIPAL_SID 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.ENDPOINT 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.ENDPOINT_WEBMETHOD 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.EXPR_COLUMN 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.EXPR_HASH 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.FULLTEXT_CATALOG 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.FULLTEXT_INDEX 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.FULLTEXT_STOPLIST 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.INDEX_EXTENSION_SCHEME 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.INDEXSTATS 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.INSTANTIATED_TYPE_HASH 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.MESSAGE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.METADATA_CACHE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.PARTITION_FUNCTION 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.PASSWORD_POLICY 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.PERMISSIONS 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.PLAN_GUIDE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.PLAN_GUIDE_HASH 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.PLAN_GUIDE_SCOPE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.QNAME 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.QNAME_HASH 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.REMOTE_SERVICE_BINDING 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.ROUTE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SCHEMA 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SECURITY_CACHE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SECURITY_DESCRIPTOR 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SEQUENCE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SERVER_EVENT_SESSIONS 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SERVER_PRINCIPAL 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SERVICE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SERVICE_BROKER_GUID 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SERVICE_CONTRACT 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SERVICE_MESSAGE_TYPE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.STATS 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SYMMETRIC_KEY 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.USER_TYPE 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.XML_COLLECTION 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.XML_COMPONENT 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.XML_INDEX_QNAME 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

次の表は、各リソースの種類に対する resource_description 列の形式です。

リソース Format 説明
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>:<最大 32 文字>:(<hash_value>) アプリケーションのロック リソースのスコープに使用する、データベース プリンシパルの ID。 アプリケーションのロック リソースに対応する、最大 32 文字のリソース文字列も含まれます。 場合によっては、完全な文字列が使用できず、2 文字のみが表示されることがあります。 この動作は、データベース復旧時、復旧処理の一部として再取得されるアプリケーション ロックに関してのみ発生します。 ハッシュ値は、このアプリケーション ロック リソースに対応する、完全リソース文字列のハッシュを示します。
HOBT 該当なし resource_associated_entity_id として含まれる HoBt ID。
ALLOCATION_UNIT 該当なし resource_associated_entity_id として含まれるアロケーション ユニット ID。
METADATA.ASSEMBLY assembly_id = A 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.ASSEMBLY_CLR_NAME $qname_id = Q 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.ASSEMBLY_TOKEN assembly_id = A, $token_id 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.ASSYMMETRIC_KEY asymmetric_key_id = A 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.AUDIT audit_id = A 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.AUDIT_ACTIONS device_id = D, major_id = M 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.AUDIT_SPECIFICATION audit_specification_id = A 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.AVAILABILITY_GROUP availability_group_id = A 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CERTIFICATE certificate_id = C 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CHILD_INSTANCE $hash = H1:H2:H3 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.COMPRESSED_FRAGMENT object_id = O , compressed_fragment_id = C 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.COMPRESSED_ROW object_id = O 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CONVERSTATION_ENDPOINT_RECV $hash = H1:H2:H3 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CONVERSTATION_ENDPOINT_SEND $hash = H1:H2:H3 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CONVERSATION_GROUP $hash = H1:H2:H3 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CONVERSATION_PRIORITY conversation_priority_id = C 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CREDENTIAL credential_id = C 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.CRYPTOGRAPHIC_PROVIDER provider_id = P 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.DATA_SPACE data_space_id = D 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.DATABASE database_id = D 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.DATABASE_PRINCIPAL principal_id = P 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.DB_MIRRORING_SESSION database_id = D 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.DB_MIRRORING_WITNESS $hash = H1:H2:H3 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.DB_PRINCIPAL_SID $hash = H1:H2:H3 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.ENDPOINT endpoint_id = E 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.ENDPOINT_WEBMETHOD $hash = H1:H2:H3 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.FULLTEXT_CATALOG fulltext_catalog_id = F 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.FULLTEXT_INDEX object_id = O 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.EXPR_COLUMN object_id = O, column_id = C 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.EXPR_HASH object_id = O, $hash = H 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.FULLTEXT_CATALOG fulltext_catalog_id = F 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.FULLTEXT_INDEX object_id = O 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.FULLTEXT_STOPLIST fulltext_stoplist_id = F 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.INDEX_EXTENSION_SCHEME index_extension_id = I 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.INDEXSTATS object_id = O, index_id or stats_id = I 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.INSTANTIATED_TYPE_HASH user_type_id = U, hash = H 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.MESSAGE message_id = M 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.METADATA_CACHE $hash = H1:H2:H3 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.PARTITION_FUNCTION function_id = F 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.PASSWORD_POLICY principal_id = P 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.PERMISSIONS class = C 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.PLAN_GUIDE plan_guide_id = P 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA. PLAN_GUIDE_HASH $hash = H1:H2:H3 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA. PLAN_GUIDE_SCOPE scope_id = S 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.QNAME $qname_id = Q 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.QNAME_HASH $qname_scope_id = Q, $qname_hash = H 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.REMOTE_SERVICE_BINDING remote_service_binding_id = R 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.ROUTE route_id = R 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SCHEMA schema_id = S 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SECURITY_CACHE $hash = H1:H2:H3 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SECURITY_DESCRIPTOR sd_id = S 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SEQUENCE $seq_type = S, object_id = O 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SERVER server_id = S 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SERVER_EVENT_SESSIONS event_session_id = E 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SERVER_PRINCIPAL principal_id = P 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SERVICE service_id = S 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SERVICE_BROKER_GUID $hash = H1:H2:H3 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SERVICE_CONTRACT service_contract_id = S 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SERVICE_MESSAGE_TYPE message_type_id = M 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.STATS object_id = O, stats_id = S 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.SYMMETRIC_KEY symmetric_key_id = S 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.USER_TYPE user_type_id = U 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.XML_COLLECTION xml_collection_id = X 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.XML_COMPONENT xml_component_id = X 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
METADATA.XML_INDEX_QNAME object_id = O, $qname_id = Q 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

次の XEvents は、パーティション SWITCH とオンライン インデックスの再構築に関連しています。 構文の詳細については、「 ALTER TABLE (Transact-SQL)」 および「 ALTER INDEX (Transact-SQL)」を参照してください。

  • lock_request_priority_state

  • process_killed_by_abort_blockers

  • ddl_with_wait_at_low_priority

オンライン インデックス操作用の既存の XEvent progress_report_online_index_operation は、 partition_numberpartition_idを追加することで拡張されました。

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 (Transact-SQL)
動的管理ビューと動的管理関数 (Transact-SQL)
トランザクション関連の動的管理ビューおよび関数 (Transact-SQL)
SQL Server の Locks オブジェクト