SQL Server - 拡張イベントで収集できるイベントデータを確認するクエリ
拡張イベントで収集できるイベントデータを確認するクエリです。
動的管理ビューを3つ使います。sys.dm_xe_packages、sys.dm_xe_objects、sys.dm_xe_object_columnsの3つ。
動的管理ビュー | 概要 |
---|---|
sys.dm_xe_packages (Transact-SQL) | パッケージ一覧。イベントはパッケージによってグルーピングされています。 |
sys.dm_xe_objects (Transact-SQL) | イベント(オブジェクト)一覧。収集したいイベントを確認できます。 |
sys.dm_xe_object_columns (Transact-SQL) | オブジェクトのカラム一覧。イベントが収集されるときにどんなデータが含まれるかを確認できます。イベントデータというかイベントの属性というか。 |
収集できるイベントデータを確認するクエリがこちらです。例としてsql_batch_completed
イベントのイベントデータを確認しています。
-- sql_batch_completedイベントのイベントデータを確認する select xe_oc.name as column_name, xe_oc.column_type as column_type, xe_oc.type_name as type_name, xe_oc.description as column_description from sys.dm_xe_packages as xe_p inner join sys.dm_xe_objects as xe_o on xe_p.guid = xe_o.package_guid inner join sys.dm_xe_object_columns as xe_oc on xe_o.package_guid = xe_oc.object_package_guid and xe_o.name = xe_oc.object_name where -- sys.dm_xe_objectsにはアクション・ターゲットなどイベント以外も含まれるので -- object_type = N'event'でフィルタ xe_o.object_type = N'event' and xe_p.name = N'sqlserver' and xe_o.name = N'sql_batch_completed';
結果です。(空白などは調整してあります。)
column_name column_type type_name column_description ------------------- ------------- ------------------ ------------------------------------------------------------------------------------- UUID readonly guid_ptr グローバル一意 ID VERSION readonly uint8 イベント スキーマのバージョン CHANNEL readonly etw_channel ETW チャネル KEYWORD readonly keyword_map 関連キーワード collect_batch_text customizable boolean 0 に設定すると、collect_batch_text によって batch_text の収集が無効になります。既定では、batch_text 列が生成されます。 cpu_time data uint64 バッチによって使用される CPU 時間 (ミリ秒)。 duration data uint64 バッチ完了にかかった時間 (マイクロ秒)。 physical_reads data uint64 バッチによって発行された、物理ページの読み取り回数。 logical_reads data uint64 バッチによって発行された、論理ページの読み取り回数。 writes data uint64 NULL row_count data uint64 バッチによって返された行数。 result data rpc_return_result バッチの実行結果を示します。 batch_text data unicode_string 実行されているバッチのテキスト。
column_typeがdata
の行が実行時に収集されるイベントデータです。column_typeがcustomizable
の行は収集するかどうかを設定できます。readonly
は固定値?まだよくわからず。
ついでにrpc_completed
イベントのイベントデータも確認しておきます。where句以外は上記と同じクエリです。
-- rpc_completedイベントのイベントデータを確認する select xe_oc.name as column_name, xe_oc.column_type as column_type, xe_oc.type_name as type_name, xe_oc.description as column_description from sys.dm_xe_packages as xe_p inner join sys.dm_xe_objects as xe_o on xe_p.guid = xe_o.package_guid inner join sys.dm_xe_object_columns as xe_oc on xe_o.package_guid = xe_oc.object_package_guid and xe_o.name = xe_oc.object_name where xe_o.object_type = N'event' and xe_p.name = N'sqlserver' and xe_o.name = N'rpc_completed';
結果。
column_name column_type type_name column_description -------------------------- ------------- ------------------------- -------------------------------------------------------------------------------------------------------------- UUID readonly guid_ptr グローバル一意 ID VERSION readonly uint8 イベント スキーマのバージョン CHANNEL readonly etw_channel ETW チャネル KEYWORD readonly keyword_map 関連キーワード collect_statement customizable boolean 0 に設定すると、collect_statement によって statement の収集が無効になります。既定では、statement 列が生成されます。 collect_data_stream customizable boolean 1 に設定すると、collect_data_stream によって data_stream の収集が有効になります。既定では、data_stream 列は生成されません。 collect_output_parameters customizable boolean 1 に設定すると、collect_output_parameters によって output_parameters の収集が有効になります。既定では、output_parameters 列は生成されません。 cpu_time data uint64 NULL duration data uint64 リモート プロシージャ呼び出しが完了するまでにかかった時間 (マイクロ秒)。 physical_reads data uint64 リモート プロシージャ呼び出しによって発行された、物理ページの読み取り回数。 logical_reads data uint64 リモート プロシージャ呼び出しによって発行された、論理ページの読み取り回数。 writes data uint64 NULL result data rpc_return_result リモート プロシージャ呼び出しからの戻り値。 row_count data uint64 リモート プロシージャ呼び出しによって返された行数。 connection_reset_option data connection_reset_option 接続のリセットに使用されたオプション。このフィールドは、接続のリセット リモート プロシージャ呼び出しでのみ使用できます。 object_name data unicode_string リモート プロシージャ呼び出しで参照されていたオブジェクトの名前。 statement data unicode_string リモート プロシージャ呼び出しで実行されたステートメントのテキスト。 data_stream data binary_data トレースの再生に使用される、リモート プロシージャ呼び出しのバイナリ ストリーム。 output_parameters data xml リモート プロシージャ呼び出しから返された出力パラメーター。
SQL Server 2016で確認しています。