sys.dm_os_waiting_tasks (Transact-SQL)
適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)
何らかのリソースを待機しているタスクの待機キューに関する情報を返します。 タスクの詳細については、「スレッドとタスクの アーキテクチャ ガイド」を参照してください。
Note
これを Azure Synapse Analytics または Analytics Platform System (PDW) から呼び出すには、名前を使用します sys.dm_pdw_nodes_os_waiting_tasks
。 この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
列名 | データ型 | 説明 |
---|---|---|
waiting_task_address |
varbinary(8) | 待機中のタスクのアドレス。 |
session_id |
smallint | タスクに関連付けられているセッションの ID。 |
exec_context_id |
int | タスクに関連付けられている実行コンテキストの ID。 |
wait_duration_ms |
bigint | この待機の種類の合計待機時間 (ミリ秒単位)。 この時間は含まれています signal_wait_time . |
wait_type |
nvarchar(60) | 待機の種類の名前。 |
resource_address |
varbinary(8) | タスクが待機しているリソースのアドレス。 |
blocking_task_address |
varbinary(8) | 現在このリソースを保持しているタスク |
blocking_session_id |
smallint | 要求をブロックしているセッションの ID。 この列が指定されている NULL 場合、要求はブロックされないか、ブロック中のセッションのセッション情報を使用できません (または識別できません)。-2 = ブロッキング リソースは、孤立した分散トランザクションによって所有されます。-3 = ブロックしているリソースは、遅延復旧トランザクションによって所有されます。-4 = session_id 内部ラッチ状態遷移のため、ブロッキング ラッチ所有者を特定できませんでした。 |
blocking_exec_context_id |
int | ブロック タスクの実行コンテキストの ID。 |
resource_description |
nvarchar(3072) | 使用されているリソースの説明。 詳細については、「resource_description列」を参照してください。 |
pdw_node_id |
int | 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW) このディストリビューションがオンになっているノードの識別子。 |
resource_description 列
resource_description列には、次の値を指定できます。
スレッド プール リソース所有者:
- threadpool id=scheduler<hex-address>
並列クエリ リソース所有者:
- exchangeEvent id={Port|Pipe}<hex-address> WaitType=<exchange-wait-type> nodeId=<exchange-node-id>
Exchange-wait-type:
- e_waitNone
- e_waitPipeNewRow
- e_waitPipeGetRow
- e_waitSynchronizeConsumerOpen
- e_waitPortOpen
- e_waitPortClose
- e_waitRange
リソース所有者のロック:
<type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id>
<type-specific-description>
次の場合があります。- DATABA の場合Standard Edition:
databaselock subresource=<databaselock-subresource> dbid=<db-id>
- FILE の場合:
filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id>
- OBJECT の場合:
objectlock lockPartition=<lock-partition-id> objid=<obj-id> subresource=<objectlock-subresource> dbid=<db-id>
- PAGE の場合:
pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource>
- キーの場合:
keylock hobtid=<hobt-id> dbid=<db-id>
- EXTENT の場合:
extentlock fileid=<file-id> pageid=<page-id> dbid=<db-id>
- RID の場合:
ridlock fileid=<file-id> pageid=<page-id> dbid=<db-id>
- アプリケーションの場合:
applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id>
- メタデータの場合:
metadatalock subresource=<metadata-subresource> classid=<metadatalock-description> dbid=<db-id>
- HOBT の場合:
hobtlock hobtid=<hobt-id> subresource=<hobt-subresource> dbid=<db-id>
- ALLOCATION_UNITの場合:
allocunitlock hobtid=<hobt-id> subresource=<alloc-unit-subresource> dbid=<db-id>
- DATABA の場合Standard Edition:
<mode>
可能: Sch-S、Sch-M、S、U、X、IS、IU、IX、SIU、SIX、UIX、BU、RangeS-S、RangeS-U、RangeI-N、RangeI-S、RangeI-U、RangeI-X、RangeX-、RangeX-U、RangeX-X
外部リソース所有者:
- 外部
ExternalResource=<wait-type>
汎用リソース所有者:
- TransactionMutex
TransactionInfo Workspace=<workspace-id>
- Mutex
- CLRTaskJoin
- CLRMonitorEvent
- CLRRWLockEvent
- resourceWait
ラッチ リソース所有者:
<db-id>:<file-id>:<page-in-file>
<GUID>
<latch-class> (<latch-address>)
最適化されたロックに関連する XACT リソース所有者:
xactlock
:xactlock xdesIdLow=<xdesIdLow> xdesIdHigh=<xdesIdHigh> dbid=<dbid> id=<resource id> mode=<mode> UnderlyingResource (<keylock|ridlock>) hobtId=<hobtId> dbid=<dbid>
アクセス許可
SQL Server と SQL Managed Instance では、VIEW SERVER STATE
アクセス許可が必要です。
SQL Database Basic、S0、S1 サービス目標、およびエラスティック プール内のデータベースの場合、サーバー管理者アカウント、Microsoft Entra 管理者アカウント、またはサーバー ロールの##MS_ServerStateReader##
メンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE
アクセス許可または ##MS_ServerStateReader##
サーバー ロールのメンバーシップのいずれかが必要です。
SQL Server 2022 以降でのアクセス許可
サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。
例
A. ブロックされたセッションからタスクを識別する
SELECT * FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL;
B. 接続ごとの待機中のタスクを表示する
SELECT st.text AS [SQL Text], c.connection_id, w.session_id,
w.wait_duration_ms, w.wait_type, w.resource_address,
w.blocking_session_id, w.resource_description, c.client_net_address, c.connect_time
FROM sys.dm_os_waiting_tasks AS w
INNER JOIN sys.dm_exec_connections AS c ON w.session_id = c.session_id
CROSS APPLY (SELECT * FROM sys.dm_exec_sql_text(c.most_recent_sql_handle)) AS st
WHERE w.session_id > 50 AND w.wait_duration_ms > 0
ORDER BY c.connection_id, w.session_id;
GO
C: 追加情報を使用して、すべてのユーザー プロセスの待機タスクを表示する
SELECT 'Waiting_tasks' AS [Information], owt.session_id,
owt.wait_duration_ms, owt.wait_type, owt.blocking_session_id,
owt.resource_description, es.program_name, est.text,
est.dbid, eqp.query_plan, er.database_id, es.cpu_time,
es.memory_usage*8 AS memory_usage_KB
FROM sys.dm_os_waiting_tasks owt
INNER JOIN sys.dm_exec_sessions es ON owt.session_id = es.session_id
INNER JOIN sys.dm_exec_requests er ON es.session_id = er.session_id
OUTER APPLY sys.dm_exec_sql_text (er.sql_handle) est
OUTER APPLY sys.dm_exec_query_plan (er.plan_handle) eqp
WHERE es.is_user_process = 1
ORDER BY owt.session_id;
GO
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示