Failover Status AAG


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;

About

Det här är min digitala anteckningsbok för allt som har med databaser, automatisering och teknik att göra.
Här samlar jag alla de där skripten, lösningarna och knepen jag byggt på mig under åren – främst inom SQL Server och PowerShell.
Istället för att de ska ligga och damma i en glömd mapp delar jag med mig av dem här, så att både jag själv (när minnet sviker) och du förhoppningsvis kan spara några timmars klickande.