dm_exec_query_statistics_xml (Transact-sql)sys.dm_exec_query_statistics_xml (Transact-SQL)

適用対象: ○SQL Server 2016 以降 ○Azure SQL Database XAzure Synapse Analytics (SQL DW) XParallel Data Warehouse APPLIES TO: yesSQL Server 2016 and later yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

インフライト要求のクエリ実行プランを返します。Returns query execution plan for in-flight requests. この DMV を使用すると、一時的な統計情報を含む showplan XML を取得できます。Use this DMV to retrieve showplan XML with transient statistics.




検索するバッチを実行するセッション id を指定します。Is the session id executing the batch to be looked up. session_idsmallintです。session_id is smallint. session_idは、次の動的管理オブジェクトから取得できます。session_id can be obtained from the following dynamic management objects:

返されるテーブルTable Returned

列名Column Name データ型Data Type [説明]Description
session_idsession_id smallintsmallint セッションの ID。ID of the session. Null 値は許容されません。Not nullable.
request_idrequest_id intint 要求の ID。ID of the request. Null 値は許容されません。Not nullable.
sql_handlesql_handle varbinary (64)varbinary(64) クエリが含まれているバッチまたはストアドプロシージャを一意に識別するトークンです。Is a token that uniquely identifies the batch or stored procedure that the query is part of. NULL 値は許可されます。Nullable.
plan_handleplan_handle varbinary (64)varbinary(64) 現在実行中のバッチのクエリ実行プランを一意に識別するトークンです。Is a token that uniquely identifies a query execution plan for a batch that is currently executing. NULL 値は許可されます。Nullable.
query_planquery_plan xmlxml 部分統計を含むplan_handleで指定されたクエリ実行プランのランタイム Showplan 表現を格納します。Contains the runtime Showplan representation of the query execution plan that is specified with plan_handle containing partial statistics. プラン表示は XML 形式です。The Showplan is in XML format. アドホック Transact-SQLTransact-SQL ステートメント、ストアド プロシージャ コール、ユーザー定義関数コールなどを含むバッチごとに、1 つのプランが生成されます。One plan is generated for each batch that contains, for example ad hoc Transact-SQLTransact-SQL statements, stored procedure calls, and user-defined function calls. NULL 値は許可されます。Nullable.


このシステム関数は、 SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1 以降で使用できます。This system function is available starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1. KB 3190871を参照See KB 3190871

このシステム関数は、標準および簡易クエリ実行統計プロファイルインフラストラクチャの両方で動作します。This system function works under both standard and lightweight query execution statistics profiling infrastructure. 詳細については、「クエリプロファイリングインフラストラクチャ」を参照してください。For more information, see Query Profiling Infrastructure.

次の条件下では、 sys. dm_exec_query_statistics_xmlについて返されたテーブルのquery_plan列には、プラン表示の出力は返されません。Under the following conditions, no Showplan output is returned in the query_plan column of the returned table for sys.dm_exec_query_statistics_xml:

  • 指定されたsession_idに対応するクエリプランが実行されなくなった場合、返されるテーブルのquery_plan列は null になります。If the query plan that corresponds to the specified session_id is no longer executing, the query_plan column of the returned table is null. たとえば、プランハンドルがキャプチャされてから、 dm_exec_query_statistics_xmlで使用された時間の間に遅延がある場合に、この状態が発生する可能性があります。For example, this condition may occur if there is a time delay between when the plan handle was captured and when it was used with sys.dm_exec_query_statistics_xml.

Xmlデータ型で許可されている入れ子になったレベルの数に制限があるため、 dm_exec_query_statistics_xmlは入れ子になった要素の128レベル以上のクエリプランを返すことができません。Due to a limitation in the number of nested levels allowed in the xml data type, sys.dm_exec_query_statistics_xml cannot return query plans that meet or exceed 128 levels of nested elements. SQL ServerSQL Server の以前のバージョンでは、この条件が原因でクエリ プランが返されず、エラー 6335 が生成されます。In earlier versions of SQL ServerSQL Server, this condition prevented the query plan from returning and generates error 6335. Service SQL Server 2005 (9.x)SQL Server 2005 (9.x) Pack 2 以降のバージョンでは、 query_plan列には NULL が返されます。In SQL Server 2005 (9.x)SQL Server 2005 (9.x) Service Pack 2 and later versions, the query_plan column returns NULL.


SQL ServerSQL Serverは、 VIEW SERVER STATEサーバーに対する権限が必要です。On SQL ServerSQL Server, requires VIEW SERVER STATE permission on the server.
Premium SQL DatabaseSQL Databaseレベルでは、データベースVIEW DATABASE STATEの権限が必要です。On SQL DatabaseSQL Database Premium Tiers, requires the VIEW DATABASE STATE permission in the database. Standard SQL DatabaseSQL Databaseレベルおよび Basic レベルでは、サーバー管理者またはAzure Active Directory 管理者アカウントが必要です。On SQL DatabaseSQL Database Standard and Basic Tiers, requires the Server admin or an Azure Active Directory admin account.


A.A. 実行中のバッチのライブクエリプランと実行統計を確認するLooking at live query plan and execution statistics for a running batch

次の例では、 dm_exec_requestsを照会して、興味深いクエリsession_idを検索し、出力からをコピーします。The following example queries sys.dm_exec_requests to find the interesting query and copy its session_id from the output.

SELECT * FROM sys.dm_exec_requests;  

次に、ライブクエリプランと実行統計を取得するには、 session_idシステム関数sys. dm_exec_query_statistics_xmlでコピーしたを使用します。Then, to obtain the live query plan and execution statistics, use the copied session_id with system function sys.dm_exec_query_statistics_xml.

--Run this in a different session than the session in which your query is running.
SELECT * FROM sys.dm_exec_query_statistics_xml(< copied session_id >);  

または、実行中のすべての要求に対して結合されます。Or combined for all running requests.

--Run this in a different session than the session in which your query is running.
SELECT * FROM sys.dm_exec_requests
CROSS APPLY sys.dm_exec_query_statistics_xml(session_id);  

参照See Also

トレース フラグTrace Flags
動的管理ビューと動的管理関数 (Transact-SQL) Dynamic Management Views and Functions (Transact-SQL)
Transact-sql)(データベース関連の動的管理ビューDatabase Related Dynamic Management Views (Transact-SQL)