sys.dm_tran_locks (Transact-SQL)
適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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 には次のいずれかの値が含まれます。
|
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_tasks の resource_address 列と結合できます。 |
pdw_node_id | int | 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW) このディストリビューションがオンになっているノードの識別子。 |
アクセス許可
SQL Server と SQL Managed Instance では、VIEW SERVER STATE
アクセス許可が必要です。
SQL Database Basic、S0、および 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_number と partition_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 オブジェクト