Quantcast
Channel: SQL Server Database Engine forum
Viewing all articles
Browse latest Browse all 12554

How do I get the execution plan(plan_handle) of rpc_completed in extended events?

$
0
0

Hi experts,

   I want to see the exeuction plan(plan_handle) of rpc_completed and I write T-SQL like below. However, it always return zero in plan_handle. What's wrong?

<event name="rpc_completed" package="sqlserver" timestamp="2013-12-12T02:22:16.158Z"><data name="cpu_time"><value>58999000</value></data><data name="duration"><value>59124861</value></data><data name="physical_reads"><value>0</value></data><data name="logical_reads"><value>587549</value></data><data name="writes"><value>0</value></data><data name="result"><value>0</value><text>OK</text></data><data name="row_count"><value>41972</value></data><data name="connection_reset_option"><value>0</value><text>None</text></data><data name="object_name"><value>sp_prepexec</value></data><data name="statement"><value>declare @p1 int
set @p1=31981
exec sp_prepexec @p1 output,N'@P1 nvarchar(3),@P2 nvarchar(3),@P3 nvarchar(30),@P4 nvarchar(4),@P5 nvarchar(4),@P6 nvarchar(4),@P7 nvarchar(4),@P8 nvarchar(4),@P9 nvarchar(4),@P10 nvarchar(4),@P11 nvarchar(4),@P12 nvarchar(2),@P13 nvarchar(8),@P14 nvarchar(8)',N'SELECT T_00 ."MANDT" AS c ,T_00 ."MATNR" AS c ,T_00 ."LIEFERANT" AS c ,T_00 ."WERK" AS c ,T_00 ."QSSYSFAM" AS c ,T_01 ."BUKRS" AS c FROM "QINF" T_00 INNER JOIN "T001K" T_01 ON T_01 ."MANDT" = @P1 AND T_00 ."WERK" = T_01 ."BWKEY" WHERE T_00 ."MANDT" = @P2 AND T_00 ."LIEFERANT" LIKE @P3 AND T_00 ."WERK" IN ( @P4 , @P5 , @P6 , @P7 , @P8 , @P9 , @P10 ) AND T_01 ."BUKRS" = @P11 AND T_00 ."SPERRFKT" &lt;&gt; @P12 AND ( T_00 ."ERSTELLDAT" &gt;= @P13 OR T_00 ."AENDERDAT" &gt;= @P14 ) 
/* R3:ZQRRM069:131 T:QINF */
',N'218',N'218',N'_______',N'CS20',N'CS31',N'CS41',N'CS50',N'CS51',N'CS52',N'CS32',N'9200',N'99',N'20131211',N'20131211'
select @p1</value></data><data name="data_stream"><value /></data><data name="output_parameters"><value /></data><action name="database_id" package="sqlserver"><value>5</value></action><action name="plan_handle" package="sqlserver"><value>0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</value></action><action name="session_id" package="sqlserver"><value>1878</value></action><action name="sql_text" package="sqlserver"><value>(@P1 nvarchar(3),@P2 nvarchar(3),@P3 nvarchar(30),@P4 nvarchar(4),@P5 nvarchar(4),@P6 nvarchar(4),@P7 nvarchar(4),@P8 nvarchar(4),@P9 nvarchar(4),@P10 nvarchar(4),@P11 nvarchar(4),@P12 nvarchar(2),@P13 nvarchar(8),@P14 nvarchar(8))SELECT T_00 ."MANDT" AS c ,T_00 ."MATNR" AS c ,T_00 ."LIEFERANT" AS c ,T_00 ."WERK" AS c ,T_00 ."QSSYSFAM" AS c ,T_01 ."BUKRS" AS c FROM "QINF" T_00 INNER JOIN "T001K" T_01 ON T_01 ."MANDT" = @P1 AND T_00 ."WERK" = T_01 ."BWKEY" WHERE T_00 ."MANDT" = @P2 AND T_00 ."LIEFERANT" LIKE @P3 AND T_00 ."WERK" IN ( @P4 , @P5 , @P6 , @P7 , @P8 , @P9 , @P10 ) AND T_01 ."BUKRS" = @P11 AND T_00 ."SPERRFKT" &lt;&gt; @P12 AND ( T_00 ."ERSTELLDAT" &gt;= @P13 OR T_00 ."AENDERDAT" &gt;= @P14 ) 
/* R3:ZQRRM069:131 T:QINF */</value></action></event>

My create event:

IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='RPC_Expensive_Queries')
    DROP EVENT SESSION [RPC_Expensive_Queries] ON SERVER;
GO

CREATE EVENT SESSION [RPC_Expensive_Queries] ON SERVER
    ADD EVENT sqlserver.rpc_completed(
         ACTION (sqlserver.database_id, 
                 sqlserver.plan_handle, 
                 sqlserver.session_id, 
                 sqlserver.sql_text)
    WHERE cpu_time > 100000000 /*total ms of CPU time, eight 0, 00000000*/
       OR duration > 100000000 /* eight 0*/
       OR logical_reads > 10000000 /* seven 0 */
       OR physical_reads > 1000000 /* six 0 */
       OR writes > 100000 ) /*five 0 */
    ADD TARGET package0.ring_buffer(SET max_memory=2048),
    ADD TARGET package0.asynchronous_bucketizer(
        SET filtering_event_name='sqlserver.rpc_completed', 
            source='sqlserver.sql_text'),
    ADD TARGET package0.asynchronous_file_target
        (SET FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\RPC_Expensive_Queries.xel', 
        METADATAFILE = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\RPC_Expensive_Queries.xem')
WITH (MAX_MEMORY = 4096KB, 
      EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS, 
      MAX_DISPATCH_LATENCY = 10 SECONDS, 
      MAX_EVENT_SIZE = 0KB, 
      MEMORY_PARTITION_MODE = NONE, 
      TRACK_CAUSALITY = OFF, 
      STARTUP_STATE = OFF)
GO

ALTER EVENT SESSION [RPC_Expensive_Queries] ON SERVER STATE = START
GO

extract xml

SELECT
	data.value (
		'(/event[@name=''rpc_completed'']/@timestamp)[1]',
			'DATETIME') AS [Time],
	data.value ('(/event/data[@name=''cpu_time'']/value)[1]', 'BIGINT') AS [CPU (ms)],
	data.value ('(/event/data[@name=''duration'']/value)[1]', 'BIGINT') AS [duration (ms)],
--	CONVERT (FLOAT, data.value (
--		'(/event/data[@name=''cpu_time'']/value)[1]', 'BIGINT')) / 1000000 AS [CPU (s)],
--	CONVERT (FLOAT, data.value (
--		'(/event/data[@name=''duration'']/value)[1]', 'BIGINT')) / 1000000 AS [Duration (s)],
        data.value('(/event/data[@name=''logical_reads'']/value)[1]','bigint') LogicalReads,
        data.value('(/event/data[@name=''physical_reads'']/value)[1]','bigint') PhysicalReads,
        data.value('(./data[@name="writes"]/value)[1]', 'bigint') as writes,
	data.value ('(/event/action[@name=''sql_text'']/value)[1]','VARCHAR(MAX)') AS [SQL Text],
        data.value ('(/event/data[@name=''statement'']/value)[1]','VARCHAR(MAX)') AS [Statement],
CAST(data.value('(event/action[@name="plan_handle"]/value)[1]', 'varchar(max)') AS XML) as plan_handle
FROM 
	(SELECT CONVERT (XML, event_data) AS data
	FROM sys.fn_xe_file_target_read_file
		('C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\RPC_Expensive_Queries*.xel',
		'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\RPC_Expensive_Queries*.xem', null, null)
	) entries  
ORDER BY [Time] DESC;
GO


Viewing all articles
Browse latest Browse all 12554

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>