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
Ke konfiguraci skupiny dostupnosti AlwaysOn pro podporu směrování jen pro čtení v SQL Serveru můžete použít Transact-SQL nebo PowerShell. Směrování jen pro čtení odkazuje na schopnost SQL Serveru směrovat požadavky na připojení jen pro čtení do dostupné sekundární repliky, která umožňuje čtení (to znamená repliky nakonfigurované tak, aby podporovala úlohy jen pro čtení, pokud je spuštěna v sekundární roli). Aby skupina dostupnosti podporovala směrování jen pro čtení, musí mít posluchač skupiny dostupnosti. Klienti jen pro čtení musí směrovat své požadavky na připojení k tomuto nasloucháči a připojovací řetězce klienta musí zadat záměr aplikace jako "jen pro čtení." To znamená, že musí být připojovací požadavky s úmyslem pro čtení.
Směrování jen pro čtení je dostupné v SQL Serveru 2016 (13.x) a novějším.
Poznámka:
Informace o tom, jak nakonfigurovat sekundární repliku pro čtení, naleznete v tématu Konfigurace Read-Only Access na replice dostupnosti (SQL Server).
Požadavky
Skupina dostupnosti musí mít posluchač skupiny dostupnosti. Další informace najdete v tématu Vytvoření nebo konfigurace naslouchacího serveru skupiny dostupnosti (SQL Server).
Jedna nebo více replik dostupnosti musí být nakonfigurována tak, aby přijímaly úlohy ve čtecím režimu v roli sekundární repliky (to znamená, že se má jednat o čitelné sekundární repliky). Další informace naleznete v tématu Konfigurace přístupu Read-Only na replice dostupnosti (SQL Server).
Musíte být připojeni k instanci serveru, která je hostitelem aktuální primární repliky.
Pokud používáte přihlášení SQL, ujistěte se, že je účet správně nakonfigurovaný. Další informace najdete v tématu Správa přihlášení a úloh pro databáze skupiny dostupnosti (SQL Server).
Jaké vlastnosti repliky potřebujete nakonfigurovat tak, aby podporovaly směrování Read-Only?
Pro každou čitelné sekundární repliku, která podporuje směrování jen pro čtení, musíte zadat adresu URL směrování jen pro čtení. Tato adresa URL se projeví jenom v případě, že je místní replika spuštěná pod sekundární rolí. Adresa URL směrování jen pro čtení musí být zadána podle potřeby pro jednotlivé repliky. Každá adresa URL pro směrování pouze pro čtení se používá ke směrování žádosti o připojení s úmyslem čtení na konkrétní čitelnou sekundární repliku. Každá čitelná sekundární replika má obvykle přiřazenou adresu URL pro směrování jen pro čtení.
Informace o výpočtu adresy URL směrování jen pro čtení pro repliku dostupnosti najdete v tématu Výpočet read_only_routing_url pro funkci AlwaysOn.
Pro každou repliku dostupnosti, kterou chcete podporovat směrování jen pro čtení, pokud se jedná o primární repliku, musíte zadat seznam směrování jen pro čtení. Daný seznam směrování pouze pro čtení se uplatní pouze když je místní replika spuštěná jako primární replika. Tento seznam musí být podle potřeby určen individuálně pro každou replikaci. Každý seznam směrování jen pro čtení obvykle obsahuje každou adresu URL směrování jen pro čtení s adresou URL místní repliky na konci seznamu.
Poznámka:
Požadavky na připojení záměru pro čtení se směrují na první dostupnou položku v seznamu směrování jen pro čtení aktuální primární repliky. Vyrovnávání zatížení mezi replikami jen pro čtení se ale podporuje. Další informace najdete v tématu Konfigurace vyrovnávání zatížení mezi replikami jen pro čtení.
Poznámka:
Informace o naslouchacích procesech skupiny dostupnosti a další informace o směrování jen pro čtení najdete v tématu Naslouchací procesy skupiny dostupnosti, připojení klienta a převzetí služeb při selhání aplikací (SQL Server).
Povolení
| Úkol | Povolení |
|---|---|
| Konfigurace replik při vytváření skupiny dostupnosti | Vyžaduje členství v pevné roli serveru správce systému a buď oprávnění k vytvoření SKUPINY DOSTUPNOSTI, oprávnění ke změně jakékoli SKUPINY DOSTUPNOSTI nebo oprávnění ke správě SERVERU. |
| Úprava repliky dostupnosti | Vyžaduje oprávnění ALTER AVAILABILITY GROUP pro skupinu dostupnosti, oprávnění CONTROL AVAILABILITY GROUP, oprávnění ALTER ANY AVAILABILITY GROUP nebo oprávnění CONTROL SERVER. |
Použití Transact-SQL
Konfigurace seznamu směrování jen pro čtení
Pomocí následujících kroků nakonfigurujte směrování jen pro čtení pomocí jazyka Transact-SQL. Příklad kódu najdete v části Příklad (Transact-SQL), dále v této části.
Připojte se k instanci serveru, která je hostitelem primární repliky.
Pokud zadáváte repliku pro novou skupinu dostupnosti, použijte příkaz CREATE AVAILABILITY GROUP Transact-SQL. Pokud přidáváte nebo upravujete repliku pro existující skupinu dostupnosti, použijte příkaz ALTER AVAILABILITY GROUP Transact-SQL.
Pokud chcete nakonfigurovat směrování jen pro čtení pro sekundární roli, zadejte v klauzuli ADD REPLICA nebo MODIFY REPLICA WITH možnost SECONDARY_ROLE následujícím způsobem:
SECONDARY_ROLE ( READ_ONLY_ROUTING_URL ='TCP://system-address:port')
Parametry adresy URL směrování jen pro čtení jsou následující:
systémová adresa
Je řetězec, například název systému, plně kvalifikovaný název domény nebo IP adresa, který jednoznačně identifikuje cílový systém počítače.přístav
Je číslo portu, které používá databázový stroj instance SQL Serveru.Příklad:
SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433')V klauzuli MODIFY REPLICA je ALLOW_CONNECTIONS nepovinný, pokud je replika už nakonfigurovaná tak, aby umožňovala připojení jen pro čtení.
Další informace naleznete v tématu Výpočet read_only_routing_url pro AlwaysOn.
Pokud chcete nakonfigurovat směrování jen pro čtení pro primární roli, zadejte v klauzuli ADD REPLICA nebo MODIFY REPLICA WITH možnost PRIMARY_ROLE následujícím způsobem:
PRIMARY_ROLE ( READ_ONLY_ROUTING_LIST =('server' [ ;... n ] ))
kde server identifikuje instanci serveru, která je hostitelem sekundární repliky jen pro čtení ve skupině dostupnosti.
Příklad:
PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('Server1','Server2'))Poznámka:
Před konfigurací seznamu směrování jen pro čtení musíte nastavit adresu URL směrování jen pro čtení.
Konfigurace vyrovnávání zatížení mezi replikami jen pro čtení
Počínaje SQL Serverem 2016 (13.x) můžete nakonfigurovat vyrovnávání zatížení mezi sadou replik jen pro čtení. Dříve směrování jen pro čtení vždy směroval provoz na první dostupnou repliku v seznamu směrování. Pokud chcete tuto funkci využít, použijte jednu úroveň vnořených závorek kolem instancí serveru READ_ONLY_ROUTING_LIST v příkazech CREATE AVAILABILITY GROUP nebo ALTER AVAILABILITY GROUP .
Například následující směrovací seznam rovnoměrně rozkládá zatížení žádostí o připojení s úmyslem čtení mezi dvě read-only repliky Server1 a Server2. Vnořené závorky, které obklopují tyto servery, identifikují sadu pro vyrovnávání zátěže. Pokud v této sadě není k dispozici žádná replika, bude pokračovat pokusem o postupné připojení k ostatním replikám Server3 a Server4v seznamu směrování jen pro čtení.
READ_ONLY_ROUTING_LIST = (('Server1','Server2'), 'Server3', 'Server4')
Všimněte si, že každá položka v seznamu směrování může být souborem replik pro čtení s vyváženým zatížením. Následující příklad ukazuje toto.
READ_ONLY_ROUTING_LIST = (('Server1','Server2'), ('Server3', 'Server4', 'Server5'), 'Server6')
Podporuje se pouze jedna úroveň vnořených závorek.
Příklad (Transact-SQL)
Následující příklad upraví dvě repliky dostupnosti existující skupiny dostupnosti, aby podporovaly směrování jen pro čtení, AG1 pokud jedna z těchto replik aktuálně vlastní primární roli. Chcete-li identifikovat instance serveru, které hostují repliku dostupnosti, tento příklad určuje názvyCOMPUTER01 instancí a COMPUTER02.
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433'));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER02' WITH
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER02' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER02.contoso.com:1433'));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER02','COMPUTER01')));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER02' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER01','COMPUTER02')));
GO
Použití PowerShellu
Konfigurace seznamu směrování jen pro čtení
Pomocí následujícího postupu nakonfigurujte směrování jen pro čtení pomocí PowerShellu. Příklad kódu najdete v části Příklad (PowerShell) dále v této části.
Nastavte výchozí (cd) na instanci serveru, která je hostitelem primární repliky.
Při přidávání repliky dostupnosti do skupiny dostupnosti použijte rutinu New-SqlAvailabilityReplica . Při úpravě existující repliky dostupnosti použijte rutinu Set-SqlAvailabilityReplica . Relevantní parametry jsou následující:
Pokud chcete nakonfigurovat směrování jen pro čtení pro sekundární roli, zadejte parametrUrl pro ReadonlyRoutingConnectionUrl.
kde je adresa URL plně kvalifikovaným názvem domény (FQDN) a portem připojení, které se mají použít při směrování na repliku pro připojení jen pro čtení. Příklad:
-ReadonlyRoutingConnectionUrl "TCP://DBSERVER8.manufacturing.Adventure-Works.com:7024"Další informace naleznete v tématu Výpočet read_only_routing_url pro AlwaysOn.
Pokud chcete nakonfigurovat přístup k připojení pro primární roli, zadejte server ReadonlyRoutingList[,... n ], kde server identifikuje instanci serveru, která je hostitelem sekundární repliky jen pro čtení ve skupině dostupnosti. Příklad:
-ReadOnlyRoutingList "SecondaryServer","PrimaryServer"Poznámka:
Před konfigurací seznamu směrování jen pro čtení musíte nastavit adresu URL směrování jen pro čtení repliky.
Poznámka:
Pokud chcete zobrazit syntaxi rutiny, použijte rutinu Get-Help v prostředí SQL Server PowerShell. Další informace najdete v tématu Získání nápovědy k SQL Serveru PowerShell.
Nastavení a použití zprostředkovatele PowerShellu pro SQL Server
Příklad (PowerShell)
Následující příklad nakonfiguruje primární repliku a jednu sekundární repliku ve skupině dostupnosti pro směrování jen pro čtení. Nejprve příklad přiřadí každé replice URL adresu pro směrování pouze pro čtení. Potom nastaví seznam směrování pouze pro čtení na primární replice. Připojení s vlastností ReadOnly nastavenou v připojovacím řetězci budou přesměrována na sekundární repliku. Pokud tato sekundární replika není čitelná (podle nastavení ConnectionModeInSecondaryRole ), připojení se přesměruje zpět na primární repliku.
Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg
$primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer"
$secondaryReplica = Get-Item "AvailabilityReplicas\SecondaryServer"
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://PrimaryServer.domain.com:1433" -InputObject $primaryReplica
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://SecondaryServer.domain.com:1433" -InputObject $secondaryReplica
Set-SqlAvailabilityReplica -ReadOnlyRoutingList "SecondaryServer","PrimaryServer" -InputObject $primaryReplica
Sledovat: Po dokončení konfigurace směrování Read-Only
Jakmile jsou aktuální primární a čitelné sekundární repliky nakonfigurovány tak, aby podporovaly směrování jen pro čtení v obou rolích, mohou čitelné sekundární repliky přijímat žádosti o připojení s úmyslem čtení od klientů, kteří se připojují prostřednictvím naslouchadla skupiny dostupnosti.
Návod
Při použití nástroje bcp nebo nástroje sqlcmd můžete zadat přístup jen pro čtení k jakékoli sekundární replice, která je povolena pro přístup jen pro čtení, zadáním přepínače -K Jen pro čtení.
Požadavky a doporučení pro klientské Connection-Strings
Aby klientská aplikace používala směrování jen pro čtení, musí její připojovací řetězec splňovat následující požadavky:
Použijte protokol TCP.
Nastavte atribut nebo vlastnost záměru aplikace na jen pro čtení.
Odkazujte na posluchače skupiny dostupnosti, která je nakonfigurována tak, aby podporovala směrování pouze pro čtení.
Odkázat na databázi v této skupině dostupnosti.
Kromě toho doporučujeme, aby připojovací řetězce umožnily převzetí služeb při selhání v prostředí s více podsítěmi, která podporují paralelní klientská vlákna pro každou repliku na každé podsíti. Tím se minimalizuje doba opětovného připojení klienta po převzetí služeb.
Syntaxe připojovacího řetězce závisí na poskytovateli SQL Serveru, který aplikace používá. Následující příklad připojovacího řetězce pro poskytovatele dat rozhraní .NET Framework 4.0.2 pro SQL Server znázorňuje části připojovacího řetězce, které jsou nezbytné a doporučené pro efektivní směrování jen pro čtení.
Server=tcp:MyAgListener,1433;Database=Db1;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly;MultiSubnetFailover=True
Další informace o záměru aplikace jen pro čtení a směrování jen pro čtení najdete v tématu Naslouchací procesy skupiny dostupnosti, připojení klienta a převzetí služeb při selhání aplikací (SQL Server).
Pokud směrování Read-Only nefunguje správně
Informace o řešení potíží s konfigurací směrování jen pro čtení naleznete v tématu Read-Only Směrování nefunguje správně.
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 Transact-SQL.
Další kroky
Zobrazit konfigurace směrování jen pro čtení
sys.availability_replicas (Transact-SQL) (sloupec read_only_routing_url )
Konfigurace přístupu k připojení klienta
Vytvoření nebo konfigurace naslouchacího zařízení skupiny dostupnosti (SQL Server)
Konfigurace přístupu Read-Only k replikám dostupnosti (SQL Server)
Použití připojovacích řetězců v aplikacích
Podpora nativního klienta SQL Serveru pro vysokou dostupnost, zotavení po havárii
Použití klíčových slov připojovacího řetězce s nativním klientem SQL Serveru
blogy:
Další obsah