patternMinor
Querying Extended Events in SQL Server 2008
Viewed 0 times
2008eventssqlextendedqueryingserver
Problem
I have created the following event session using a script I got from Kimberly Tripp's SQL Server 2008 Internals book. It has been modified to send to a file instead of the ring buffer.
Here is the original script to query the data.
How could I modify it to read from the two files xel and xem instead of the ring buffer. I have been googling around but the learning curve has b
CREATE EVENT SESSION
[statement_completed_file]
ON SERVER
ADD EVENT
sqlserver.sp_statement_completed,
ADD EVENT
sqlserver.sql_statement_completed
(
ACTION
(
sqlserver.sql_text
)
WHERE
(
sqlserver.session_id=53
)
)
ADD TARGET package0.asynchronous_file_target
(
set filename=N'C:\MSSQL\TEMP\stats.xel',
metadatafile=N'C:\MSSQL\TEMP\stats.xem'
)
WITH
(
MAX_MEMORY=4096KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY=1 SECONDS,
TRACK_CAUSALITY=OFF,
STARTUP_STATE=OFF
)Here is the original script to query the data.
SELECT
theNodes.event_data.value('(data/value)[1]', 'bigint') AS source_database_id,
theNodes.event_data.value('(data/value)[2]', 'bigint') AS object_id,
theNodes.event_data.value('(data/value)[3]', 'bigint') AS object_type,
theNodes.event_data.value('(data/value)[4]', 'bigint') AS cpu,
theNodes.event_data.value('(data/value)[5]', 'bigint') AS duration,
theNodes.event_data.value('(data/value)[6]', 'bigint') AS reads,
theNodes.event_data.value('(data/value)[7]', 'bigint') AS writes,
theNodes.event_data.value('(action/value)[1]', 'nvarchar(max)') AS sql_text
FROM
(
SELECT
CONVERT(XML, st.target_data) AS ring_buffer
FROM sys.dm_xe_sessions s
JOIN sys.dm_xe_session_targets st ON s.address = st.event_session_address
WHERE s.name = 'statement_completed'
) AS theData
CROSS APPLY
theData.ring_buffer.nodes('//RingBufferTarget/event') theNodes (event_data)
WHERE theNodes.event_data.value('(action/value)[1]', 'nvarchar(max)') is not nullHow could I modify it to read from the two files xel and xem instead of the ring buffer. I have been googling around but the learning curve has b
Solution
Try to play with this example:
CREATE EVENT SESSION
[statement_completed_file]
ON SERVER
ADD EVENT
sqlserver.sp_statement_completed,
ADD EVENT
sqlserver.sql_statement_completed
(
ACTION
(
sqlserver.sql_text
)
WHERE
(
sqlserver.session_id <> 53
)
)
ADD TARGET package0.asynchronous_file_target
(
set filename=N'C:\stats.xel',
metadatafile=N'C:\stats.xem'
)
WITH
(
MAX_MEMORY=4096KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY=1 SECONDS,
TRACK_CAUSALITY=OFF,
STARTUP_STATE=OFF
)
GO
ALTER EVENT SESSION [statement_completed_file]
ON SERVER
STATE=START
GO
SELECT event_data,
event_data.value('(event/@name)[1]', 'varchar(50)') AS event_name,
event_data.value('(event/data/value)[1]', 'bigint') AS source_database_id,
event_data.value('(event/data/value)[2]', 'bigint') AS object_id,
event_data.value('(event/data/value)[3]', 'bigint') AS object_type,
event_data.value('(event/data/value)[4]', 'bigint') AS cpu,
event_data.value('(event/data/value)[5]', 'bigint') AS duration,
event_data.value('(event/data/value)[6]', 'bigint') AS reads,
event_data.value('(event/data/value)[7]', 'bigint') AS writes,
event_data.value('(event/action/value)[1]', 'nvarchar(max)') AS sql_text
FROM
(
SELECT CAST(event_data AS XML) AS event_data
FROM sys.fn_xe_file_target_read_file('C:\stats*.xel', 'C:\stats*.xem', null, null)
) tbl
GO
DROP EVENT SESSION [statement_completed_file] ON SERVER
GOCode Snippets
CREATE EVENT SESSION
[statement_completed_file]
ON SERVER
ADD EVENT
sqlserver.sp_statement_completed,
ADD EVENT
sqlserver.sql_statement_completed
(
ACTION
(
sqlserver.sql_text
)
WHERE
(
sqlserver.session_id <> 53
)
)
ADD TARGET package0.asynchronous_file_target
(
set filename=N'C:\stats.xel',
metadatafile=N'C:\stats.xem'
)
WITH
(
MAX_MEMORY=4096KB,
EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY=1 SECONDS,
TRACK_CAUSALITY=OFF,
STARTUP_STATE=OFF
)
GO
ALTER EVENT SESSION [statement_completed_file]
ON SERVER
STATE=START
GO
SELECT event_data,
event_data.value('(event/@name)[1]', 'varchar(50)') AS event_name,
event_data.value('(event/data/value)[1]', 'bigint') AS source_database_id,
event_data.value('(event/data/value)[2]', 'bigint') AS object_id,
event_data.value('(event/data/value)[3]', 'bigint') AS object_type,
event_data.value('(event/data/value)[4]', 'bigint') AS cpu,
event_data.value('(event/data/value)[5]', 'bigint') AS duration,
event_data.value('(event/data/value)[6]', 'bigint') AS reads,
event_data.value('(event/data/value)[7]', 'bigint') AS writes,
event_data.value('(event/action/value)[1]', 'nvarchar(max)') AS sql_text
FROM
(
SELECT CAST(event_data AS XML) AS event_data
FROM sys.fn_xe_file_target_read_file('C:\stats*.xel', 'C:\stats*.xem', null, null)
) tbl
GO
DROP EVENT SESSION [statement_completed_file] ON SERVER
GOContext
StackExchange Database Administrators Q#9903, answer score: 7
Revisions (0)
No revisions yet.