I have SQL Server 2008R2 10.50 with SP1.
When running a black box query I am still getting incorrect event timestamps. Any idea how to get the correct timestamp in this query?
Thanks.
SELECT CAST(target_data AS xml) AS TargetData
FROM sys.dm_xe_session_targets st
INNER JOIN sys.dm_xe_sessions s ON s.address = st.event_session_address
WHERE name = 'system_health' and target_name = 'ring_buffer'
GO
;WITH
XMLData AS (
SELECT CAST(target_data AS xml) AS target_data
FROM sys.dm_xe_session_targets st
INNER JOIN sys.dm_xe_sessions s ON s.address = st.event_session_address
WHERE name = 'system_health' and target_name = 'ring_buffer'
)
,ErrorData AS (
SELECT x.query('.') AS error
FROM XMLData d
CROSS APPLY target_data.nodes ('/RingBufferTarget/event') AS n(x)
)
SELECT
error.value('(event/@timestamp)[1]', 'datetime') as event_timestamp
,error.value('(event/@name)[1]', 'nvarchar(max)') as name
,error.value ('(event/data[@name="error_number"]/.)[1]', 'int') AS error_number
,error.value ('(event/data[@name="severity"]/.)[1]', 'int') AS severity
,error.value ('(event/data[@name="state"]/.)[1]', 'int') AS [state]
,error.value ('(event/data[@name="user_defined"]/.)[1]', 'nvarchar(max)') AS user_defined
,error.value ('(event/data[@name="message"]/.)[1]', 'nvarchar(max)') AS [message]
,error.value ('(event/action[@name="callstack"]/.)[1]', 'nvarchar(max)') AS callstack
,error.value ('(event/action[@name="session_id"]/.)[1]', 'nvarchar(max)') AS session_id
,error.value ('(event/action[@name="database_id"]/.)[1]', 'int') AS database_id
,error.value ('(event/action[@name="sql_text"]/.)[1]', 'nvarchar(max)') AS sql_text
,error.query ('(event/action[@name="tsql_stack"]/value/frames/.)[1]') AS tsql_stack
,error.query('.')
FROM ErrorData
WHERE error.exist('event/.[@name="error_reported"]') = 1