Distributed Always On Groups Scripts:
--Get Replicas associated with Availability Groups (Availability Groups and Distributed Availability Groups) SELECT ag.[name] AS [AG Name], ag.Is_Distributed, ar.replica_server_name AS [Replica Name] FROM sys.availability_groups AS ag INNER JOIN sys.availability_replicas AS ar ON ag.group_id = ar.group_id; GO
--Get Synchronization Status of Distributed Availability Groups SELECT ag.[name] AS [AG Name], ag.is_distributed, ar.replica_server_name AS [Underlying AG], ars.role_desc AS [Role], ars.synchronization_health_desc AS [Sync Status] FROM sys.availability_groups AS ag INNER JOIN sys.availability_replicas AS ar ON ag.group_id = ar.group_id INNER JOIN sys.dm_hadr_availability_replica_states AS ars ON ar.replica_id = ars.replica_id WHERE ag.is_distributed = 1; GO
--Get performance of Distributed Availability Groups SELECT ag.[name] AS [Distributed AG Name], ar.replica_server_name AS [Underlying AG], dbs.[name] AS [Database], ars.role_desc AS [Role], drs.synchronization_health_desc AS [Sync Status], drs.log_send_queue_size, drs.log_send_rate, drs.redo_queue_size, drs.redo_rate FROM sys.databases AS dbs INNER JOIN sys.dm_hadr_database_replica_states AS drs ON dbs.database_id = drs.database_id INNER JOIN sys.availability_groups AS ag ON drs.group_id = ag.group_id INNER JOIN sys.dm_hadr_availability_replica_states AS ars ON ars.replica_id = drs.replica_id INNER JOIN sys.availability_replicas AS ar ON ar.replica_id = ars.replica_id WHERE ag.is_distributed = 1; GO
--Get OS performance counters related to the Distributed Availability Group named 'dag' SELECT * FROM sys.dm_os_performance_counters WHERE instance_name LIKE '%dag%'
--Get synchronization status, send rate, and redo rate of availability groups including distributed availability groups SELECT ag.name AS [AG Name], ag.Is_Distributed, ar.replica_server_name AS [AG], dbs.name AS [Database], ars.Role_Desc, drs.Synchronization_Health_Desc, drs.Log_send_queue_size, drs.Log_send_rate, drs.Redo_queue_size, drs.Redo_rate, drs.Suspend_reason_desc, drs.Last_sent_time, drs.Last_received_time, drs.Last_hardened_time, drs.Last_redone_time, drs.Last_commit_time, drs.Secondary_lag_seconds FROM sys.databases dbs INNER JOIN sys.dm_hadr_database_replica_states drs ON dbs.database_id = drs.database_id INNER JOIN sys.availability_groups ag ON drs.group_id = ag.group_id INNER JOIN sys.dm_hadr_availability_replica_states ars ON ars.replica_id = drs.replica_id INNER JOIN sys.availability_replicas ar ON ar.replica_id = ars.replica_id WHERE ag.is_distributed = 1 GO
--Get endpoint url and synchronization state for Availability Groups including Distributed Availability Groups SELECT ag.name AS group_name, ag.is_distributed, ar.replica_server_name AS replica_name, ar.endpoint_url, ar.availability_mode_desc, ar.failover_mode_desc, ar.primary_role_allow_connections_desc AS allow_connections_primary, ar.secondary_role_allow_connections_desc AS allow_connections_secondary, ar.seeding_mode_desc AS seeding_mode FROM sys.availability_replicas AS ar JOIN sys.availability_groups AS ag ON ar.group_id = ag.group_id; GO
--Get current_state of seeding SELECT ag.name AS aag_name, ar.replica_server_name, d.name AS database_name, has.current_state, has.failure_state_desc AS failure_state, has.error_code, has.performed_seeding, has.start_time, has.completion_time, has.number_of_attempts FROM sys.dm_hadr_automatic_seeding AS has INNER JOIN sys.availability_groups AS ag ON ag.group_id = has.ag_id INNER JOIN sys.availability_replicas AS ar ON ar.replica_id = has.ag_remote_replica_id INNER JOIN sys.databases AS d ON d.group_database_id = has.ag_db_id ORDER BY has.completion_time Desc; GO
|
|
|
|
|