Notatka
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
W tym artykule przedstawiono sposób nawiązywania połączenia z odbiornikiem zawsze włączonej grupy dostępności dla programu SQL Server. Odbiornik grupy dostępności to nazwa sieci wirtualnej, której klienci używają do łączenia się z bazą danych hostowaną w grupie dostępności. Odbiornik zapewnia spójny punkt końcowy połączenia dla aplikacji klienckich, niezależnie od tego, która replika dostępności obecnie hostuje podstawową bazę danych. Słuchacz umożliwia również obsługę routingu tylko do odczytu i automatycznego przełączania awaryjnego.
Po skonfigurowaniu odbiornika zaktualizuj parametry połączenia, aby wskazywały odbiornik, tak aby ruch aplikacji był automatycznie kierowany do zamierzonej repliki bez konieczności ręcznego aktualizowania parametrów połączenia po każdym przejściu w tryb failover.
Nawiąż połączenie z repliką podstawową
Określ nazwę DNS odbiornika grupy dostępności w parametrach połączenia, aby nawiązać połączenie z repliką podstawową na potrzeby dostępu do odczytu i zapisu.
Aby na przykład nawiązać połączenie z repliką podstawową w programie SQL Server Management Studio za pośrednictwem odbiornika, wprowadź nazwę DNS odbiornika w polu nazwa serwera:
Podczas pracy w trybie failover, gdy replika podstawowa ulegnie zmianie, istniejące połączenia z odbiornikiem są rozłączone, a nowe połączenia są kierowane do nowej repliki podstawowej.
Przykład podstawowych parametrów połączenia dla dostawcy ADO.NET (Microsoft.Data.SqlClient lub System.Data.SqlClient):
Server=tcp: AGListener,1433;Database=MyDB;Integrated Security=SSPI
Uwaga / Notatka
Microsoft.Data.SqlClient jest zalecanym dostawcą danych ADO.NET na potrzeby tworzenia nowych aplikacji. Obsługuje on te same słowa kluczowe parametrów połączenia co System.Data.SqlClient. Aby uzyskać więcej informacji, zobacz Wprowadzenie do przestrzeni nazw Microsoft.Data.SqlClient.
Możesz sprawdzić, z którą repliką jest obecnie połączona za pośrednictwem odbiornika, uruchamiając następujące polecenie Transact-SQL (T-SQL):
SELECT @@SERVERNAME
Na przykład gdy sqlVM1 jest repliką podstawową:
Można wciąż połączyć się bezpośrednio z wystąpieniem programu SQL Server, używając nazwy wystąpienia repliki podstawowej lub pomocniczej zamiast nasłuchiwacza grupy dostępności. Utracisz jednak korzyści wynikające z automatycznego kierowania nowych połączeń do nowej bieżącej repliki podstawowej. Ponadto utracisz korzyści z routingu tylko do odczytu, gdzie połączenia określone za pomocą read-intent są automatycznie kierowane do repliki pomocniczej z możliwością odczytu.
Połącz się z repliką tylko do odczytu
Trasowanie tylko do odczytu odnosi się do automatycznego kierowania przychodzących połączeń z odbiornikiem do możliwej do odczytu repliki pomocniczej, która umożliwia odczyt i jest skonfigurowana do wykonywania zadań tylko do odczytu.
Połączenia są automatycznie kierowane do repliki w trybie tylko do odczytu, jeśli spełnione są następujące warunki:
Co najmniej jedna replika pomocnicza jest ustawiona na dostęp tylko do odczytu, a każda replika pomocnicza tylko do odczytu i replika podstawowa są skonfigurowane do obsługi routingu tylko do odczytu.
Parametry połączenia odwołują się do bazy danych zaangażowanej w grupę dostępności. Alternatywą może być to, że login używany w połączeniu ma skonfigurowaną bazę danych jako swoją domyślną bazę danych. Aby uzyskać więcej informacji, zobacz ten artykuł dotyczący sposobu działania algorytmu z routingiem tylko do odczytu.
Parametry połączenia odwołują się do odbiornika grupy dostępności, a intencja aplikacji połączenia przychodzącego jest ustawiona na tylko do odczytu (na przykład przy użyciu słowa kluczowego Application Intent=ReadOnly w parametrach połączenia ODBC lub OLEDB albo atrybutach połączenia lub właściwościach).
Atrybut intencji aplikacji jest przechowywany w sesji klienta podczas logowania. Wystąpienie programu SQL Server przetwarza intencję i określa, co należy zrobić zgodnie z konfiguracją grupy dostępności i bieżącym stanem odczytu i zapisu docelowej bazy danych w repliki pomocniczej.
Aby na przykład nawiązać połączenie z repliką tylko do odczytu przy użyciu programu SQL Server Management Studio, wybierz pozycję Opcje w oknie dialogowym Łączenie z serwerem , wybierz kartę Dodatkowe parametry połączenia , a następnie określ ApplicationIntent=ReadOnly w polu tekstowym:
Przykład parametrów połączenia dla dostawcy ADO.NET (Microsoft.Data.SqlClient lub System.Data.SqlClient), który wyznacza intencję aplikacji tylko do odczytu:
Server=tcp:AGListener;Database=AdventureWorks;Integrated Security=SSPI;ApplicationIntent=ReadOnly
Aby uzyskać więcej informacji, zobacz Konfigurowanie dostępu tylko do odczytu na replika dostępności (SQL Server)
Port niezdefaultowy
Podczas tworzenia odbiornika należy wyznaczyć port do użycia przez odbiornik. Jeśli port jest domyślnym portem 1433, nie musisz określać numeru portu podczas nawiązywania połączenia z odbiornikiem. Jeśli jednak port nie jest równy 1433, to port musi być określony w parametrach połączenia w postaci listenername,port, na przykład:
Przykład parametrów połączenia dla dostawcy ADO.NET (Microsoft.Data.SqlClient lub System.Data.SqlClient), który określa port niezdefault dla odbiornika:
Server=tcp:AGListener,1445;Database=AdventureWorks;Integrated Security=SSPI
Pomiń odbiorniki
Podczas gdy nasłuchiwacze grupy dostępności umożliwiają obsługę przekierowywania w trybie failover i routingu tylko do odczytu, połączenia klienckie nie muszą ich używać. Połączenie klienta może również bezpośrednio odwoływać się do instancji SQL Server zamiast nawiązywać połączenie z odbiornikiem grupy dostępności.
Dla wystąpienia SQL Server nie ma znaczenia, czy połączenie loguje się przy użyciu nasłuchiwacza grupy dostępności, czy innego punktu końcowego wystąpienia. Instancja SQL Server weryfikuje stan docelowej bazy danych i zezwala lub nie zezwala na łączność na podstawie konfiguracji grupy dostępności i bieżącego stanu bazy danych w instancji. Na przykład, jeśli aplikacja kliencka łączy się bezpośrednio z wystąpieniem serwera SQL na porcie i łączy się z docelową bazą danych hostowaną w grupie dostępności, a docelowa baza danych jest w stanie pierwotnym i online, wtedy łączność będzie skuteczna. Jeśli docelowa baza danych jest w trybie offline lub w stanie przejściowym, łączność z bazą danych kończy się niepowodzeniem.
Alternatywnie, podczas migracji z dublowania bazy danych do grup dostępności Always On, aplikacje mogą określać parametry połączenia dublowania bazy danych, o ile istnieje tylko jedna replika pomocnicza i nie zezwala ona na połączenia użytkowników.
Parametry połączenia mirroringu bazy danych
Jeśli grupa dostępności ma tylko jedną replikę pomocniczą i jest skonfigurowana z użyciem ALLOW_CONNECTIONS = READ_ONLY lub ALLOW_CONNECTIONS = NONE dla repliki pomocniczej, klienci mogą łączyć się z repliką podstawową, używając ciągu połączenia do dublowania bazy danych. Takie podejście może być przydatne podczas migrowania istniejącej aplikacji z funkcji dublowania bazy danych do grupy dostępności, o ile grupa dostępności zostanie ograniczona do dwóch replik dostępności (repliki podstawowej i jednej repliki pomocniczej). W przypadku dodawania dodatkowych replik pomocniczych należy utworzyć odbiornik grupy dostępności dla grupy dostępności i zaktualizować aplikacje tak, aby używały nazwy DNS odbiornika grupy dostępności.
Podczas korzystania z ciągów połączenia z dublowaniem baz danych, klient może użyć programu SQL Server Native Client lub dostawcy danych .NET Framework dla SQL Server. Parametr połączenia dostarczony przez klienta musi co najmniej podać nazwę jednego wystąpienia serwera, czyli początkową nazwę partnera, aby zidentyfikować wystąpienie serwera, które początkowo udostępnia replikę dostępności, z którą zamierzasz nawiązać połączenie. Opcjonalnie łańcuch połączenia może również podać nazwę innego wystąpienia serwera, nazwę partnera trybu awaryjnego, aby zidentyfikować wystąpienie serwera, które początkowo hostuje replikę pomocniczą jako nazwę partnera trybu awaryjnego.
Aby uzyskać więcej informacji na temat parametrów połączenia w ramach mirroringu bazy danych, zobacz Łączenie klientów z sesją mirroringu bazy danych (SQL Server).
Przełączanie awaryjne między wieloma podsieciami
Jeśli używasz bibliotek klienckich, które obsługują opcję MultiSubnetFailover w parametrach połączenia, możesz zoptymalizować przenoszenie grupy dostępności do innej podsieci, ustawiając MultiSubnetFailover na "True" lub "Tak", w zależności od składni używanego dostawcy.
Uwaga / Notatka
Zalecamy to ustawienie zarówno dla połączeń jednopodsieciowych i wielopodsieciowych z nasłuchiwaczami grup dostępności, jak i z nazwami instancji klastra przełączania awaryjnego SQL Server. Włączenie tej opcji powoduje dodanie dodatkowych optymalizacji, nawet w przypadku scenariuszy z jedną podsiecią.
Opcja połączenia MultiSubnetFailover działa tylko z protokołem sieciowym TCP i jest obsługiwana tylko podczas nawiązywania połączenia ze słuchaczem grupy dostępności i dla dowolnej nazwy sieci wirtualnej łączącej się z SQL Server.
Przykład parametrów połączenia dostawcy ADO.NET (Microsoft.Data.SqlClient lub System.Data.SqlClient) umożliwiających przejście w tryb failover z wieloma podsieciami jest następujący:
Server=tcp:AGListener,1433;Database=AdventureWorks;Integrated Security=SSPI; MultiSubnetFailover=True
Opcja połączenia MultiSubnetFailover powinna być ustawiona na True, nawet jeśli grupa dostępności obejmuje tylko jedną podsieć. Ta opcja pozwala wstępnie skonfigurować nowych klientów, aby wspierać przyszłe rozciąganie podsieci bez konieczności zmiany łańcucha połączenia klienta, a także optymalizuje wydajność przełączania awaryjnego dla pojedynczych podsieci. Chociaż opcja połączenia MultiSubnetFailover nie jest wymagana, oferuje korzyść szybszego przełączania awaryjnego podsieci. Sterownik klienta próbuje otworzyć gniazdo TCP dla każdego adresu IP równolegle skojarzonego z grupą dostępności. Sterownik klienta czeka, aż pierwszy adres IP odpowie pomyślnie i po jego zakończeniu używa go do połączenia.
Odbiorniki i certyfikaty TLS/SSL
W przypadku nawiązywania połączenia z odbiornikiem grupy dostępności, jeśli uczestniczące wystąpienia programu SQL Server używają certyfikatów TLS/SSL w połączeniu z szyfrowaniem sesji, sterownik klienta połączenia musi obsługiwać alternatywną nazwę podmiotu w certyfikacie TLS/SSL w celu wymuszenia szyfrowania.
Certyfikat X.509 musi być skonfigurowany dla każdego węzła serwera uczestniczących w klastrze trybu failover z listą wszystkich odbiorników grupy dostępności ustawionych w alternatywnej nazwie podmiotu certyfikatu.
Format wartości certyfikatu to:
CN = Server.FQDN
SAN = Server.FQDN,Listener1.FQDN,Listener2.FQDN
Na przykład masz następujące wartości:
Servername: Win2019
Instance: SQL2019
AG: AG2019
Listener: Listener2019
Domain: contoso.com (which is also the FQDN)
W przypadku usługi WSFC, która ma jedną grupę dostępności, certyfikat powinien mieć w pełni kwalifikowaną nazwę domeny (FQDN) serwera oraz nazwę FQDN odbiornika:
CN: Win2019.contoso.com
SAN: Win2019.contoso.com, Listener2019.contoso.com
W przypadku tej konfiguracji połączenie jest szyfrowane podczas nawiązywania połączenia z wystąpieniem (WIN2019\SQL2019) lub odbiornikiem (Listener2019).
W zależności od konfiguracji sieci istnieje niewielki podzbiór klientów, którzy również muszą dodać netBIOS do sieci SAN. W tym przypadku wartości certyfikatu powinny być następujące:
CN: Win2019.contoso.com
SAN: Win2019,Win2019.contoso.com,Listener2019,Listener2019.contoso.com
Jeśli usługa WSFC ma trzy nasłuchiwacze grup dostępności, takie jak: Listener1, Listener2, Listener3
Następnie wartości certyfikatu powinny być następujące:
CN: Win2019.contoso.com
SAN: Win2019.contoso.com,Listener1.contoso.com,Listener2.contoso.com,Listener3.contoso.com
Odbiorniki i sieci Kerberos (SPN)
Administrator domeny musi skonfigurować główną nazwę usługi (SPN) w usłudze Active Directory dla każdego odbiornika grupy dostępności w celu włączenia protokołu Kerberos dla połączeń klientów z odbiornikiem. Podczas rejestrowania SPN należy użyć konta usługi instancji serwera, która hostuje replikę dostępności. Aby system nazw SPN działał poprawnie we wszystkich replikach, należy używać tego samego konta usługi dla wszystkich instancji w klastrze WSFC, które hostują grupę dostępności.
Użyj narzędzia wiersza polecenia setspn systemu Windows, aby skonfigurować SPN. Na przykład, aby skonfigurować nazwę SPN dla odbiornika grupy dostępności o nazwie AG1listener.Adventure-Works.com, hostowanego na zestawie instancji SQL Server, wszystkich skonfigurowanych do uruchamiania w ramach konta domeny corp\svclogin2:
setspn -A MSSQLSvc/AG1listener.Adventure-Works.com:1433 corp\svclogin2
Aby uzyskać więcej informacji na temat ręcznej rejestracji głównej nazwy usługi dla programu SQL Server, zobacz Rejestrowanie głównej nazwy usługi dla połączeń Kerberos.