
Tag : AAG,SQL
DECLARE @xel_path VARCHAR(1024);
DECLARE @utc_adjustment INT = Datediff(hour, Getutcdate(), Getdate());
WITH target_data_cte
AS (SELECT target_data = CONVERT(XML, target_data)
FROM sys.dm_xe_sessions s
INNER JOIN sys.dm_xe_session_targets st
ON s.address = st.event_session_address
WHERE s.NAME = 'alwayson_health'
AND st.target_name = 'event_file'),
full_path_cte
AS (SELECT full_path = target_data.value('(EventFileTarget/File/@name)[1]',
'varchar(1024)'
)
FROM target_data_cte)
SELECT @xel_path = LEFT(full_path, Len(full_path) - Charindex('\', Reverse(
full_path)))
+ '\AlwaysOn_health*.xel'
FROM full_path_cte;
------------------- replica state change events -------------------------------
;
WITH state_change_data
AS (SELECT object_name,
event_data = CONVERT(XML, event_data)
FROM sys.Fn_xe_file_target_read_file(@xel_path, NULL, NULL, NULL))
SELECT object_name,
event_timestamp = Dateadd(hour, @utc_adjustment,
event_data.value('(event/@timestamp)[1]',
'datetime')),
ag_name =
event_data.value('(event/data[@name = "availability_group_name"]/value)[1]',
'varchar(64)'),
previous_state =
event_data.value('(event/data[@name = "previous_state"]/text)[1]',
'varchar(64)'
),
current_state =
event_data.value('(event/data[@name = "current_state"]/text)[1]', 'varchar(64)'
)
FROM state_change_data
WHERE object_name = 'availability_replica_state_change'
ORDER BY event_timestamp DESC;