-- Create the Event Session
IF EXISTS(SELECT *
FROM sys.server_event_sessions
WHERE name='SQLStmtEvents')
DROP EVENT SESSION SQLStmtEvents
ON SERVER;
GO
CREATE EVENT SESSION SQLStmtEvents
ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
ACTION (sqlserver.client_app_name,
sqlserver.plan_handle,
sqlserver.sql_text,
sqlserver.tsql_stack,
package0.callstack,
sqlserver.request_id)
--Change this to match the AdventureWorks,
--AdventureWorks2008 or AdventureWorks2008 DB_ID()
WHERE sqlserver.database_id=5
)
ADD TARGET package0.ring_buffer
WITH (MAX_DISPATCH_LATENCY=5SECONDS, TRACK_CAUSALITY=ON)
GO
-- Start the Event Session
ALTER EVENT SESSION SQLStmtEvents
ON SERVER
STATE = START;
GO
-- Change database contexts and insert one row parameterized
USE AdventureWorks2008R2;
GO
DECLARE @ErrorTime datetime = GETDATE(),
@UserName sysname = SYSTEM_USER,
@ErrorNumber int = -1,
@ErrorSeverity int = -1,
@ErrorState int = -1,
@ErrorProcedure nvarchar(126) = 'ErrorProcedure',
@ErrorLine int = 10,
@ErrorMessage nvarchar(4000) = 'An error occured'
INSERT INTO [dbo].[ErrorLog]
([ErrorTime],[UserName],[ErrorNumber],[ErrorSeverity],[ErrorState],
[ErrorProcedure],[ErrorLine],[ErrorMessage])
VALUES(@ErrorTime,@UserName,@ErrorNumber,@ErrorSeverity,@ErrorState,
@ErrorProcedure,@ErrorLine,@ErrorMessage)
GO 5
-- Retrieve the Event Data from the Event Session Target
SELECT event_name,
plan_handle,
sql_text,
query_plan
FROM
(
SELECT
event_data.value('(event/@name)[1]', 'varchar(50)') AS event_name,
CAST(event_data.value('(event/action[@name="plan_handle"]/value)[1]', 'varchar(max)') AS XML) as plan_handle,
event_data.value('(event/action[@name="sql_text"]/value)[1]', 'varchar(max)') AS sql_text
FROM( SELECT evnt.query('.') AS event_data
FROM
( SELECT CAST(target_data AS xml) AS TargetData
FROM sys.dm_xe_sessions AS s
JOIN sys.dm_xe_session_targets AS t
ON s.address = t.event_session_address
WHERE s.name = 'SQLStmtEvents'
AND t.target_name = 'ring_buffer'
) AS tab
CROSS APPLY TargetData.nodes ('RingBufferTarget/event') AS split(evnt)
) AS evts(event_data)
) AS tab
CROSS APPLY sys.dm_exec_query_plan(plan_handle.value('xs:hexBinary(substring((plan/@handle)[1], 3))', 'varbinary(max)')) as qp