Preskočiť na obsah
Skript

Always On AG – stav replík a synchronizácie

Stav databáz v Availability Groups: synchronizácia, zdravie, send a redo queue a čas posledného commitu pre každú repliku.

always-on-ag-stav-replik-a-synchronizacie.sql 26 riadkov · T-SQL
Parametre skriptu doplň a kopíruj hotový skript
/* DeadlockCafe | Always On AG – stav replík a synchronizácie
   Účel:  Stav databáz v Availability Groups: synchronizácia, zdravie, send a redo queue a čas posledného commitu pre každú repliku.
   Režim: READ ONLY | SQL Server 2016 – 2022, on-premises
*/
SET NOCOUNT ON;

IF CONVERT(int,SERVERPROPERTY('IsHadrEnabled')) <> 1
BEGIN
  PRINT N'Always On Availability Groups nie sú na tejto inštancii zapnuté.';
END
ELSE
BEGIN
 SELECT ag.name AS ag_name, ar.replica_server_name,
        adc.database_name, drs.is_local,
        drs.database_state_desc, drs.synchronization_state_desc,
        drs.synchronization_health_desc,
        drs.log_send_queue_size AS log_send_queue_kb,
        drs.redo_queue_size AS redo_queue_kb,
        drs.last_commit_time
 FROM sys.dm_hadr_database_replica_states AS drs
 JOIN sys.availability_replicas AS ar ON ar.replica_id=drs.replica_id
 JOIN sys.availability_groups AS ag ON ag.group_id=ar.group_id
 JOIN sys.availability_databases_cluster AS adc ON adc.group_database_id=drs.group_database_id
 ORDER BY ag.name,adc.database_name,ar.replica_server_name;
END;
## Kedy použiť

Po failoveri, počas incidentu alebo keď hrozí rast send / redo queue a tým aj logu.

## Ako čítať výsledok

Sleduj `synchronization_health_desc` (HEALTHY), `synchronization_state_desc` (SYNCHRONIZED pri synchrónnom commite), `log_send_queue_kb` a `redo_queue_kb`. Rozdiel `last_commit_time` medzi primárnou a sekundárnou replikou je približné oneskorenie dát.

> [!WARNING]
> Na sekundárnej replike vidíš len lokálne údaje – úplný obraz je na primárnej. Bez zapnutého Always On skript len vypíše upozornenie.

**Oprávnenia:** `VIEW SERVER STATE` (na SQL Server 2022 stačí aj `VIEW SERVER PERFORMANCE STATE`).  
**Režim:** READ ONLY · **Verzia:** SQL Server 2016 – 2022

## Súvisiace recepty

- [Transaction log – obsadenie, reuse wait a VLF](script.php?id=33&s=transaction-log-obsadenie-reuse-wait-a-vlf)