SET SET STATISTICS XML (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL データベース

Microsoft SQL Server で Transact-SQL ステートメントを実行し、ステートメントの実行方法に関する詳細情報を整形式の XML ドキュメント形式で生成します。

Transact-SQL 構文表記規則

構文

  
SET STATISTICS XML { ON | OFF }  

解説

SET SET STATISTICS XMLの設定は実行時または実行時に設定され、解析時ではありません。

SET SET STATISTICS XMLがONの場合、SQL Serverは各文の実行情報を返します。 返される情報は、このオプションが ON に設定されてから OFF に設定されるまでに実行されたすべての Transact-SQL ステートメントに関する情報です。 SET SET STATISTICS XMLがバッチ内の唯一の文である必要はありません。

SET SET STATISTICS XML SQLcmdユーティリティのようなアプリケーションでは、XML出力が後に他のツールでクエリプラン情報の表示や処理に利用される場合、出力はnvarchar(max)として返されます。

SET SET STATISTICS XML 情報をXMLドキュメントのセットとして返します。 SET SET STATISTICS XML ON文の後の各文は、単一の文書で出力に反映されます。 それぞれのドキュメントには、ステートメントのテキストと、実行ステップの詳細が含まれます。 この出力では、コスト、アクセスしたインデックス、実行された操作の種類、結合順序、物理操作が実行された回数、それぞれの物理操作で作成された行の数など、実行時の情報が示されます。

SET SET STATISTICS XMLのXML出力のXMLスキーマを含むドキュメントは、セットアップ時にMicrosoft SQL Serverがインストールされているコンピュータのローカルディレクトリにコピーされます。 このドキュメントは、SQL Server のインストール ファイルと同じドライブ上にあります。場所は次のとおりです。

\Microsoft SQL Server\100\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd

プラン表示スキーマは、こちらの Web サイトにもあります。

SET SET STATISTICS PROFILE そして SETSET STATISTICS XML は互いに対応する存在です。 前者ではテキスト形式の出力が生成され、後者では XML 形式の出力が生成されます。 今後のSQL Serverバージョンでは、新しいクエリ実行計画情報はSETSET STATISTICS XML文を通じてのみ表示され、SETSET STATISTICS PROFILE文では表示されません。

Note

SQL Server Management Studioで「実際の実行計画を含める」を選択した場合、このSETオプションはXMLショープランの出力を生成しません。 このSETオプションを使う前に「実際の実行計画を含める」ボタンをクリアしてください。

アクセス許可

SET SET STATISTICS XMLを使用し出力を表示するには、以下の権限が必要です:

  • Transact-SQL ステートメントを実行するための適切な権限。

  • SHOWPLAN 権限。これは、Transact-SQL ステートメントで参照されるオブジェクトを含むすべてのデータベースに対して必要です。

STATISTICS XML結果セットを生成しない Transact-SQL 文の場合、Transact-SQL 文を実行するための適切な権限のみが必要です。 STATISTICS XML結果セットを生成する Transact-SQL 文の場合、Transact-SQL 文実行権限とSHOWPLAN権限の両方のチェックが成功しなければ、Transact-SQL 文の実行は中止されShowplan情報が生成されません。

以下の2つの文は、SETSET STATISTICS XML設定を用いてクエリSQL Serverインデックスの分析と最適化を示しています。 最初のクエリでは、インデックス付き列の WHERE 句で = (等しい) 比較演算子を使用します。 2 番目のクエリでは、WHERE 句で LIKE 演算子を使用します。 このように指定すると、SQL Server によってクラスター化インデックス スキャンが行われ、WHERE 句の条件を満たすデータが検索されます。 EstimateRows 属性と EstimatedTotalSubtreeCost 属性の値は、インデックスが設定された最初のクエリの方が小さくなっています。これは、インデックスを設定されていないクエリよりも速く処理が行われ、使用リソースが少なかったことを示しています。

USE AdventureWorks2022;  
GO  
SET STATISTICS XML ON;  
GO  
-- First query.  
SELECT BusinessEntityID   
FROM HumanResources.Employee  
WHERE NationalIDNumber = '509647174';  
GO  
-- Second query.  
SELECT BusinessEntityID, JobTitle   
FROM HumanResources.Employee  
WHERE JobTitle LIKE 'Production%';  
GO  
SET STATISTICS XML OFF;  
GO  

参照

SET SHOWPLAN_XML (Transact-SQL)
sqlcmd ユーティリティ