To Check Who Failover Always on Ag
high-availability #failover#health-check#high-availability
DECLARE @FileName NVARCHAR(4000)
SELECT @FileName = target_data.value('(EventFileTarget/File/@name)[1]','nvarchar(4000)')
FROM (
SELECT CAST(target_data AS XML) target_data
FROM sys.dm_xe_sessions s
JOIN sys.dm_xe_session_targets t
ON s.address = t.event_session_address
WHERE s.name = N'AlwaysOn_health'
) ft
SELECT
XEData.value('(event/@timestamp)[1]','datetime2(3)') AS event_timestamp,
XEData.value('(event/data[@name="availability_group_name"]/value)[1]', 'nvarchar(max)') AS availability_group_name,
XEData.value('(event/data[@name="client_app_name"]/value)[1]', 'nvarchar(max)') AS client_app_name,
XEData.value('(event/data[@name="client_hostname"]/value)[1]', 'nvarchar(max)') AS client_hostname,
XEData.value('(event/data[@name="client_hostname"]/value)[1]', 'nvarchar(255)') AS client_hostname,
XEData.value('(event/data[@name="nt_username"]/value)[1]', 'nvarchar(255)') AS nt_username,
XEData.value('(event/data[@name="statement"]/value)[1]', 'nvarchar(max)') AS statement
FROM (
SELECT CAST(event_data AS XML) XEData, *
FROM sys.fn_xe_file_target_read_file(@FileName, NULL, NULL, NULL)
WHERE object_name = 'alwayson_ddl_executed'
) event_data