Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2019 (15.x) a novější
SQL Server 2019 (15.x) zavádí přesměrování připojení pro čtení a zápis ze sekundární do primární repliky pro skupiny dostupnosti Always On. Přesměrování připojení pro čtení a zápis je k dispozici na libovolné platformě operačního systému. Umožňuje přesměrování připojení klientských aplikací na primární repliku bez ohledu na cílový server zadaný v připojovacím řetězci.
Například připojovací řetězec může cílit na sekundární repliku. V závislosti na konfiguraci repliky skupiny dostupnosti a nastavení v připojovacím řetězci je možné připojení automaticky přesměrovat na primární repliku.
Případy použití
Před verzí SQL Server 2019 (15.x) naslouchací proces skupiny dostupnosti a odpovídající prostředek clusteru přesměrovávají uživatelský provoz na primární repliku, aby bylo po převzetí služeb při selhání zajištěno opětovné připojení. SQL Server 2019 (15.x) nadále podporuje funkce naslouchacího procesu AG a přidává přesměrování připojení k replice pro scénáře, ve kterých nelze zahrnout naslouchací proces. Například:
- Clusterová technologie, se kterou se integrují skupiny dostupnosti SQL Serveru, nenabízí obdobnou funkci, jako je naslouchací bod
- Konfigurace s více podsítěmi, například v cloudu, nebo plovoucí IP adresa ve více podsítích s nástrojem Pacemaker, kde se konfigurace kvůli zapojení více komponent stává složitou, náchylnou k chybám a obtížně se řeší
- Typ clusteru pro škálování čtení nebo zotavení po havárii je
NONE, protože neexistuje žádný přímočarý mechanismus, který by zajistil transparentní opětovné připojení při ručním převzetí služeb při selhání.
Požadavek
Aby sekundární replika mohla přesměrovávat požadavky na připojení pro čtení i zápis:
- Sekundární replika musí být online.
- Specifikace
PRIMARY_ROLErepliky musí obsahovatREAD_WRITE_ROUTING_URL. - Připojovací řetězec musí být
ReadWrite, a to buď definovánímApplicationIntentjakoReadWrite, nebo nenastavenímApplicationIntenta ponecháním výchozí hodnoty (ReadWrite).
Nastavit možnost READ_WRITE_ROUTING_URL
Pokud chcete nakonfigurovat přesměrování připojení pro čtení/zápis, nastavte pro primární repliku při vytváření skupiny dostupnosti hodnotu READ_WRITE_ROUTING_URL.
V SQL Serveru 2019 (15.x) READ_WRITE_ROUTING_URL byl přidán do <add_replica_option> specifikace. Viz následující témata:
PRIMARY_ROLE(READ_WRITE_ROUTING_URL) není nastaveno (výchozí)
Ve výchozím nastavení není u repliky nastavené přesměrování připojení pro čtení/zápis. Způsob, jakým sekundární replika zpracovává požadavky na připojení, závisí na tom, jestli je sekundární replika nastavená tak, aby umožňovala připojení a nastavení ApplicationIntent v připojovacím řetězci. Následující tabulka ukazuje, jak sekundární replika zpracovává připojení na základě hodnot SECONDARY_ROLE (ALLOW CONNECTIONS = ) a ApplicationIntent.
ApplicationIntent hodnota |
SECONDARY_ROLE (ALLOW CONNECTIONS = NO) |
SECONDARY_ROLE (ALLOW CONNECTIONS = READ_ONLY) |
SECONDARY_ROLE (ALLOW CONNECTIONS = ALL) |
|---|---|---|---|
ApplicationIntent=ReadWriteVýchozí |
Selhání připojení | Selhání připojení | Úspěšné připojení Čtení je úspěšné. Neúspěšné zápisy |
ApplicationIntent=ReadOnly |
Selhání připojení | Úspěšné připojení | Úspěšné připojení |
Předchozí tabulka ukazuje výchozí chování, které je stejné jako verze SQL Serveru před SQL Serverem 2019 (15.x).
PRIMARY_ROLE(READ_WRITE_ROUTING_URL) je nastaveno
Po nastavení přesměrování připojení pro čtení a zápis se způsob, jakým replika zpracovává požadavky na připojení, změní. Chování připojení stále závisí na nastavení SECONDARY_ROLE (ALLOW CONNECTIONS = ) a ApplicationIntent. Následující tabulka ukazuje, jak sekundární replika s nastavením READ_WRITE_ROUTING zpracovává připojení na základě SECONDARY_ROLE (ALLOW CONNECTIONS = ) a ApplicationIntent.
ApplicationIntent hodnota |
SECONDARY_ROLE (ALLOW CONNECTIONS = NO) |
SECONDARY_ROLE (ALLOW CONNECTIONS = READ_ONLY) |
SECONDARY_ROLE (ALLOW CONNECTIONS = ALL) |
|---|---|---|---|
ApplicationIntent=ReadWriteVýchozí |
Selhání připojení | Selhání připojení | Trasa připojení k primárnímu |
ApplicationIntent=ReadOnly |
Selhání připojení | Úspěšné připojení | Úspěšné připojení |
Předchozí tabulka ukazuje, že pokud má primární replika nastaveno READ_WRITE_ROUTING_URL, sekundární replika přesměruje připojení na primární repliku, pokud SECONDARY_ROLE (ALLOW CONNECTIONS = ALL) a připojení určuje ReadWrite.
Návrat k výchozímu chování směrování
Počínaje SQL Serverem 2025 (17.x) můžete zadat NONE jako READ_WRITE_ROUTING_URL nebo READ_ONLY_ROUTING_URL cíl k vrácení zadaného směrování pro repliky dostupnosti a vykonávat směrování provozu na základě výchozího chování. Další informace najdete v příkazu ALTER AVAILABILITY GROUP jazyka Transact-SQL.
Příklad
V tomto příkladu má skupina dostupnosti tři repliky:
- Primární replika na COMPUTER01
- Synchronní sekundární replika na COMPUTER02
- Asynchronní sekundární replika na COMPUTER03
Následující obrázek představuje skupinu dostupnosti.
Následující skript jazyka Transact-SQL vytvoří tuto skupinu dostupnosti (AG). V tomto příkladu každá replika READ_WRITE_ROUTING_URLurčuje .
CREATE AVAILABILITY GROUP MyAg
WITH ( CLUSTER_TYPE = NONE )
FOR
DATABASE [<Database1>]
REPLICA ON
'COMPUTER01' WITH
(
ENDPOINT_URL = 'TCP://COMPUTER01.<domain>.<tld>:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL,
READ_ONLY_ROUTING_URL = 'TCP://COMPUTER01.<domain>.<tld>:1433' ),
PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE,
READ_ONLY_ROUTING_LIST = ('COMPUTER02', 'COMPUTER03'),
READ_WRITE_ROUTING_URL = 'TCP://COMPUTER01.<domain>.<tld>:1433' ),
SESSION_TIMEOUT = 10
),
'COMPUTER02' WITH
(
ENDPOINT_URL = 'TCP://COMPUTER02.<domain>.<tld>:5022',
AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL,
READ_ONLY_ROUTING_URL = 'TCP://COMPUTER02.<domain>.<tld>:1433' ),
PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE,
READ_ONLY_ROUTING_LIST = ('COMPUTER01', 'COMPUTER03'),
READ_WRITE_ROUTING_URL = 'TCP://COMPUTER02.<domain>.<tld>:1433' ),
SESSION_TIMEOUT = 10
),
'COMPUTER03' WITH
(
ENDPOINT_URL = 'TCP://COMPUTER03.<domain>.<tld>:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL,
SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL,
READ_ONLY_ROUTING_URL = 'TCP://COMPUTER03.<domain>.<tld>:1433' ),
PRIMARY_ROLE (ALLOW_CONNECTIONS = READ_WRITE,
READ_ONLY_ROUTING_LIST = ('COMPUTER01', 'COMPUTER02'),
READ_WRITE_ROUTING_URL = 'TCP://COMPUTER03.<domain>.<tld>:1433' ),
SESSION_TIMEOUT = 10
);
GO
<domain>.<tld>- Doména a doména nejvyšší úrovně plně kvalifikovaného názvu domény. Například:
corporation.com.
- Doména a doména nejvyšší úrovně plně kvalifikovaného názvu domény. Například:
Chování připojení
V následujícím diagramu se klientská aplikace připojí k COMPUTER02 s ApplicationIntent=ReadWrite. Připojení je přesměrováno na primární repliku.
Sekundární replika přesměruje volání čtení a zápisu na primární repliku. Připojení pro čtení i zápis ke kterékoli z replik bude přesměrováno na primární repliku.
V následujícím diagramu došlo k ručnímu převzetí služeb při selhání primární repliky COMPUTER02. Klientská aplikace se připojuje k COMPUTER01 pomocí ApplicationIntent=ReadWrite. Připojení je přesměrováno na primární repliku.
Viz také
přehled skupin dostupnosti AlwaysOn (SQL Server)
O přístupu klientského připojení k replikám dostupnosti (SQL Server)