Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Aby skonfigurować zawsze włączoną grupę dostępności do obsługi routingu tylko do odczytu w programie SQL Server, możesz użyć Transact-SQL lub programu PowerShell. Routing tylko do odczytu odnosi się do możliwości programu SQL Server do kierowania odpowiednich żądań połączeń tylko do odczytu do dostępnej repliki wtórnej do odczytu (czyli repliki skonfigurowanej do zezwalania na obciążenia tylko do odczytu, gdy jest uruchomiona w roli drugorzędnej). Aby obsługiwać routing tylko do odczytu, grupa dostępności musi mieć nasłuchiwacz grupy dostępności. Klienci z prawami tylko do odczytu muszą kierować swoje żądania połączenia do tego nasłuchiwacza, a ciągi połączenia klienta muszą określać intencję aplikacji jako "tylko do odczytu". Oznacza to, że muszą być żądaniami połączenia z intencją odczytu.
Routing tylko do odczytu jest dostępny w programie SQL Server 2016 (13.x) i nowszych wersjach.
Uwaga / Notatka
Aby uzyskać informacje o sposobie konfigurowania repliki pomocniczej z możliwością odczytu, zobacz Konfigurowanie dostępu Read-Only w replice dostępności (SQL Server).
Wymagania wstępne
Grupa dostępności musi mieć nasłuchiwacz grupy dostępności. Aby uzyskać więcej informacji, zobacz Tworzenie lub konfigurowanie listenera grupy dostępności (SQL Server).
Co najmniej jedna replika dostępności musi być skonfigurowana do akceptowania tylko do odczytu w roli pomocniczej (czyli do odczytu replik pomocniczych). Aby uzyskać więcej informacji, zobacz Konfigurowanie dostępu Read-Only w repliki dostępności (SQL Server).
Musisz mieć połączenie z wystąpieniem serwera hostujące bieżącą replikę podstawową.
Jeśli używasz identyfikatora logowania SQL, upewnij się, że konto jest poprawnie skonfigurowane. Aby uzyskać więcej informacji, zobacz Zarządzanie logowaniami i pracami baz danych grupy dostępności (SQL Server).
Jakie właściwości repliki należy skonfigurować do obsługi routingu Read-Only?
Dla każdej repliki pomocniczej z możliwością odczytu, która obsługuje routing tylko do odczytu, należy określić adres URL routingu tylko do odczytu. Ten adres URL ma zastosowanie tylko wtedy, gdy replika lokalna jest uruchomiona w ramach roli pomocniczej. Adres URL routingu tylko do odczytu musi być określony dla każdej repliki z osobna, w zależności od potrzeb. Każdy adres URL tylko do odczytu jest używany do kierowania żądań odczytu do określonej czytelnej repliki pomocniczej. Zazwyczaj każda replika pomocnicza z możliwością odczytu ma przypisany adres URL routingu tylko do odczytu.
Aby uzyskać informacje na temat obliczania adresu URL routingu tylko do odczytu dla repliki dostępności, zobacz Obliczanie read_only_routing_url dla Always On
Dla każdej repliki dostępności, którą chcesz wspierać routowaniem tylko do odczytu, gdy jest repliką podstawową, należy określić listę routingu tylko do odczytu. Dana lista routingu tylko do odczytu ma zastosowanie tylko wtedy, gdy replika lokalna jest uruchomiona w ramach roli podstawowej. Ta lista musi być określona dla każdej repliki osobno, w zależności od potrzeb. Zazwyczaj każda lista routingu tylko do odczytu zawiera każdy adres URL routingu tylko do odczytu z adresem URL repliki lokalnej na końcu listy.
Uwaga / Notatka
Żądania połączeń intencji odczytu są kierowane do pierwszego dostępnego wpisu na liście routingu repliki podstawowej działającej w trybie tylko do odczytu. Obsługiwane jest jednak równoważenie obciążenia na replikach tylko do odczytu. Aby uzyskać więcej informacji, zobacz Konfigurowanie równoważenia obciążenia między replikami tylko do odczytu.
Uwaga / Notatka
Aby uzyskać informacje o słuchaczach grup dostępności oraz dodatkowe informacje na temat routingu tylko do odczytu, zobacz Słuchacze grup dostępności, Łączność klienta i Przejście awaryjne aplikacji (SQL Server).
Uprawnienia
Zadanie | Uprawnienia |
---|---|
Aby skonfigurować repliki podczas tworzenia grupy dostępności | Wymaga członkostwa w sysadmin stałej roli serwera oraz jednego z następujących uprawnień: uprawnienie do utworzenia grupy dostępności, uprawnienie do zmiany dowolnej grupy dostępności lub kontrola serwera. |
Aby zmodyfikować replikę dostępności | Wymaga uprawnienia ALTER AVAILABILITY GROUP w grupie dostępności, uprawnienia KONTROLI GRUPY DOSTĘPNOŚCI, uprawnienia ALTER ANY AVAILABILITY GROUP lub uprawnienia CONTROL SERVER. |
Korzystanie z Transact-SQL
Konfigurowanie listy routingu tylko do odczytu
Wykonaj poniższe kroki, aby skonfigurować routing tylko do odczytu przy użyciu języka Transact-SQL. Aby zapoznać się z przykładem kodu, zobacz Przykład (Transact-SQL), w dalszej części tej sekcji.
Połącz się z instancją serwera hostującą replikę podstawową.
Jeśli określasz replikę dla nowej grupy dostępności, użyj instrukcji CREATE AVAILABILITY GROUP Transact-SQL. Jeśli dodasz lub zmodyfikujesz replikę dla istniejącej grupy dostępności, użyj instrukcji ALTER AVAILABILITY GROUP Transact-SQL.
Aby skonfigurować routing tylko do odczytu dla roli pomocniczej, w klauzuli ADD REPLICA lub MODIFY REPLICA WITH określ opcję SECONDARY_ROLE w następujący sposób:
SECONDARY_ROLE ( READ_ONLY_ROUTING_URL ='TCP://system-address:port')
Parametry adresu URL routingu tylko do odczytu są następujące:
adresów systemowych
To ciąg, taki jak nazwa systemu, w pełni kwalifikowana nazwa domeny lub adres IP, który jednoznacznie identyfikuje system komputera docelowego.port
Jest numerem portu używanym przez silnik bazy danych wystąpienia SQL Server.Przykład:
SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433')
W klauzuli MODIFY REPLICA parametr ALLOW_CONNECTIONS jest opcjonalny, jeśli replika jest już skonfigurowana do zezwalania na połączenia w trybie tylko do odczytu.
Aby uzyskać więcej informacji, zobacz Obliczanie read_only_routing_url dla funkcji Always On.
Aby skonfigurować trasowanie tylko do odczytu dla roli podstawowej, w klauzuli ADD REPLICA lub MODIFY REPLICA WITH określ opcję PRIMARY_ROLE w następujący sposób:
PRIMARY_ROLE ( READ_ONLY_ROUTING_LIST =('server' [ ,... n ] ))
gdzie serwer identyfikuje wystąpienie serwera hostujące replikę pomocniczą tylko do odczytu w grupie dostępności.
Przykład:
PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('Server1','Server2'))
Uwaga / Notatka
Przed skonfigurowaniem listy routingu tylko do odczytu należy ustawić adres URL routingu tylko do odczytu.
Konfigurowanie równoważenia obciążenia między replikami w trybie tylko do odczytu
Począwszy od programu SQL Server 2016 (13.x), można skonfigurować równoważenie obciążenia w zestawie replik tylko do odczytu. Wcześniej routing w trybie tylko do odczytu zawsze kierował ruch do pierwszej dostępnej repliki na liście routingu. Aby skorzystać z tej funkcji, użyj jednego poziomu zagnieżdżonych nawiasów wokół wystąpień serwera READ_ONLY_ROUTING_LIST w poleceniach CREATE AVAILABILITY GROUP lub ALTER AVAILABILITY GROUP .
Na przykład poniższa lista routingu równoważy żądania połączeń z intencją odczytu pomiędzy dwie repliki tylko do odczytu, Server1
i Server2
. Zagnieżdżone nawiasy otaczające te serwery identyfikują zestaw o zrównoważonym obciążeniu. Jeśli żadna replika nie jest dostępna w tym zestawie, spróbuje sekwencyjnie nawiązać połączenie z innymi replikami Server3
i Server4
na liście routingu tylko do odczytu.
READ_ONLY_ROUTING_LIST = (('Server1','Server2'), 'Server3', 'Server4')
Należy pamiętać, że każdy wpis na liście routingu może być zestawem replik do odczytu ze zrównoważonym obciążeniem. W poniższym przykładzie pokazano to.
READ_ONLY_ROUTING_LIST = (('Server1','Server2'), ('Server3', 'Server4', 'Server5'), 'Server6')
Obsługiwany jest tylko jeden poziom zagnieżdżonych nawiasów.
Przykład (Transact-SQL)
Poniższy przykład modyfikuje dwie repliki dostępności w istniejącej grupie dostępności, aby obsługiwać trasowanie tylko do odczytu, AG1
, jeśli jedna z tych replik jest obecnie właścicielem roli głównej. Aby zidentyfikować wystąpienia serwera hostujące replikę dostępności, w tym przykładzie podano nazwy wystąpień —COMPUTER01
i 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
Korzystanie z programu PowerShell
Konfigurowanie listy routingu tylko do odczytu
Wykonaj poniższe kroki, aby skonfigurować routing tylko do odczytu przy użyciu programu PowerShell. Aby zapoznać się z przykładem kodu, zobacz Przykład (PowerShell), w dalszej części tej sekcji.
Ustaw wartość domyślną (cd) dla instancji serwera, która hostuje replikę podstawową.
Podczas dodawania repliki dostępności do grupy dostępności, użyj cmdlet New-SqlAvailabilityReplica. Podczas modyfikowania istniejącej repliki dostępności użyj polecenia cmdlet Set-SqlAvailabilityReplica . Odpowiednie parametry są następujące:
Aby skonfigurować routing tylko do odczytu dla roli pomocniczej, określ parametr ReadonlyRoutingConnectionUrl"url".
gdzie adres URL to w pełni kwalifikowana nazwa domeny (FQDN) i port używany podczas routingu do repliki dla połączeń tylko do odczytu. Przykład:
-ReadonlyRoutingConnectionUrl "TCP://DBSERVER8.manufacturing.Adventure-Works.com:7024"
Aby uzyskać więcej informacji, zobacz Obliczanie read_only_routing_url dla funkcji Always On.
Aby skonfigurować dostęp do połączenia dla roli podstawowej, określ wartość ReadonlyRoutingList"server" [ ,... n ], gdzie serwer identyfikuje wystąpienie serwera, które hostuje replikę pomocniczą tylko do odczytu w grupie dostępności. Przykład:
-ReadOnlyRoutingList "SecondaryServer","PrimaryServer"
Uwaga / Notatka
Przed skonfigurowaniem listy routingu tylko do odczytu należy ustawić adres URL routingu tylko do odczytu repliki.
Uwaga / Notatka
Aby wyświetlić składnię cmdletu, użyj cmdletu Get-Help w środowisku PowerShell SQL Server. Aby uzyskać więcej informacji, zobacz Get Help SQL Server PowerShell.
Konfigurowanie i używanie dostawcy PowerShell SQL Server
Przykład (PowerShell)
Poniższy przykład konfiguruje replikę podstawową i jedną replikę pomocniczą w grupie dostępności na potrzeby routingu tylko do odczytu. Najpierw przykład przypisuje adres URL routingu tylko do odczytu do każdej repliki. Następnie ustawia listę routingu tylko do odczytu w repliki podstawowej. Połączenia z właściwością "ReadOnly" ustawioną w parametrach połączenia zostaną przekierowane do repliki pomocniczej. Jeśli ta replika pomocnicza nie jest czytelna (zgodnie z ustawieniem ConnectionModeInSecondaryRole ), połączenie zostanie przekierowane z powrotem do repliki podstawowej.
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
Kontynuacja: Po skonfigurowaniu routingu Read-Only
Gdy bieżąca replika podstawowa i repliki pomocnicze z możliwością odczytu są skonfigurowane do obsługi routingu tylko do odczytu w obu rolach, repliki pomocnicze z możliwością odczytu mogą odbierać żądania połączenia odczytu intencji od klientów łączących się za pośrednictwem odbiornika grupy dostępności.
Wskazówka
W przypadku korzystania z narzędzia bcp lub narzędzia sqlcmd można określić dostęp tylko do odczytu do dowolnej repliki pomocniczej, która jest włączona dla dostępu tylko do odczytu, określając przełącznik -K ReadOnly .
Wymagania i zalecenia dotyczące klienta Connection-Strings
Aby aplikacja kliencka korzystała z routingu tylko do odczytu, jego parametry połączenia muszą spełniać następujące wymagania:
Użyj protokołu TCP.
Ustaw atrybut/właściwość intencji aplikacji na wartość readonly.
Skorzystaj z odbiornika grupy dostępności skonfigurowanej do obsługi routingu tylko do odczytu.
Odwołaj się do bazy danych w tej grupie dostępności.
Ponadto zalecamy, aby ciągi połączeń włączały przełączanie awaryjne dla wielu podsieci, co wspiera równoległy wątek klienta dla każdej repliki w każdej podsieci. Minimalizuje to czas ponownego nawiązywania połączenia klienta po przejściu w tryb failover.
Składnia parametrów połączenia zależy od dostawcy programu SQL Server używanej przez aplikację. Poniższe przykładowe parametry połączenia dla dostawcy danych programu .NET Framework 4.0.2 dla programu SQL Server ilustrują części parametrów połączenia, które są wymagane i zalecane do pracy w przypadku routingu tylko do odczytu.
Server=tcp:MyAgListener,1433;Database=Db1;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly;MultiSubnetFailover=True
Aby uzyskać więcej informacji na temat trybu aplikacji tylko do odczytu i trasowania tylko do odczytu, zobacz Odbiorniki grupy dostępności, łączność klienta i tryb failover aplikacji (SQL Server).
Jeśli routing Read-Only nie działa poprawnie
Aby uzyskać informacje na temat rozwiązywania problemów z konfiguracją routingu tylko do odczytu, zobacz Read-Only Routing nie działa poprawnie.
Przywróć domyślne zachowanie routingu
Począwszy od programu SQL Server 2025 (17.x) (wersja zapoznawcza), można określić NONE
jako lokalizację docelową READ_WRITE_ROUTING_URL
lub READ_ONLY_ROUTING_URL
, aby cofnąć określony routing dla repliki dostępności i kierować ruch na podstawie domyślnego zachowania. Aby dowiedzieć się więcej, zapoznaj się z poleceniem ALTER AVAILABILITY GROUP Transact-SQL.
Dalsze kroki
Aby wyświetlić konfiguracje routingu tylko do odczytu
sys.listy_trasowania_tylko_do_odczytu_dostępności (Transact-SQL)
sys.availability_replicas (Transact-SQL) (kolumna read_only_routing_url )
Aby skonfigurować dostęp do połączenia klienta
Tworzenie lub konfigurowanie nasłuchiwacza grupy dostępności (SQL Server)
Konfigurowanie dostępu do repliki dostępności Read-Only (SQL Server)
Aby używać parametrów połączenia w aplikacjach
Obsługa klienta natywnego programu SQL Server pod kątem wysokiej dostępności, odzyskiwania po awarii
Używanie słów kluczowych parametrów połączenia z klientem natywnym programu SQL Server
Blogi :
Oficjalne dokumenty:
- Oficjalne opracowania Zespołu Doradczego Klientów SQL Server
Dodatkowa zawartość