ストアド プロシージャを使用する代わりに、拡張イベント トレースは DDL を使用して作成されます。次の例は、リング バッファーとトレース ファイルの両方のターゲットを使用したトレースと、「sys.fn_xe_file_target_read_file」TVF から選択して XE トレース データを返すことを示しています。
リング バッファ ターゲットは、永続性を必要とせず、最新のイベントをメモリに保持したいだけの場合に便利です。ファイル ターゲットを使用すると、最大ファイル サイズとロールオーバー ファイルの数を指定できます。多くのイベントをキャプチャする場合は、ファイル ターゲットをお勧めします。
SSMS オブジェクト エクスプローラーを使用してトレースを作成し、アプリケーションのニーズに合わせてスクリプトを生成できます。
CREATE EVENT SESSION [batch_and_rpc] ON SERVER
ADD EVENT sqlserver.rpc_starting(
WHERE ([sqlserver].[client_hostname]=N'ServerName')),
ADD EVENT sqlserver.rpc_completed(
WHERE ([sqlserver].[client_hostname]=N'ServerName')),
ADD EVENT sqlserver.sql_batch_starting(
WHERE ([sqlserver].[client_hostname]=N'ServerName')),
ADD EVENT sqlserver.sql_batch_completed(
WHERE ([sqlserver].[client_hostname]=N'ServerName'))
ADD TARGET package0.event_file(SET filename=N'C:\TraceFiles\batch_and_rpc.xel'),
ADD TARGET package0.ring_buffer
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
GO
ALTER EVENT SESSION [batch_and_rpc] ON SERVER STATE = START;
GO
SELECT *
FROM sys.fn_xe_file_target_read_file('C:\TraceFiles\batch_and_rpc*.xel', null, null, null);
GO
XE セッションを削除するには:
DROP EVENT SESSION [batch_and_rpc] ON SERVER;
Microsoft.SqlServer.XEvent 名前空間のオブジェクトを使用して XE データを読み取ることもできます。ただし、メソッドは十分に文書化されていないことに注意してください。http://blogs.msdn.com/b/extended_events/archive/2011/07/20/introducing-the-extended-events-reader.aspxを参照してください。