Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym temacie omówiono dostawcę danych Microsoft SqlClient, który obsługuje program SQL Server w kontekście wysokiej dostępności i odzyskiwania po awarii — Grupy Dostępności Always On. Funkcja Always On Availability Groups została dodana do programu SQL Server 2012. Aby uzyskać więcej informacji na temat zawsze włączonych grup dostępności, zobacz Sql Server Books Online.
Teraz można określić odbiornik grupy dostępności (wysokiej dostępności, odzyskiwania po awarii) grupy dostępności (AG) lub wystąpienia klastra trybu failover programu SQL Server 2012 we właściwości połączenia. Jeśli aplikacja SqlClient jest połączona z bazą danych Always On, która przechodzi w tryb failover, oryginalne połączenie zostanie przerwane i aplikacja musi otworzyć nowe połączenie, aby kontynuować pracę po przejściu w tryb failover.
Jeśli nie łączysz się z odbiornikiem grupy dostępności lub wystąpieniem klastra trybu failover programu SQL Server 2012, a jeśli z nazwą hosta jest skojarzonych wiele adresów IP, program SqlClient będzie iterować sekwencyjnie przez wszystkie adresy IP skojarzone z wpisem DNS. Może to być czasochłonne, jeśli pierwszy adres IP zwrócony przez serwer DNS nie jest powiązany z żadną kartą interfejsu sieciowego. Podczas nawiązywania połączenia z odbiornikiem grupy dostępności lub wystąpieniem klastra trybu failover programu SQL Server 2012 program SqlClient próbuje nawiązać połączenia ze wszystkimi adresami IP równolegle i jeśli próba połączenia powiedzie się, sterownik odrzuci wszelkie oczekujące próby połączenia.
Uwaga / Notatka
Zwiększenie limitu czasu połączenia i zaimplementowanie logiki ponawiania połączenia zwiększy prawdopodobieństwo, że aplikacja połączy się z grupą dostępności. Ponadto, ponieważ połączenie może zakończyć się niepowodzeniem z powodu przejścia w tryb failover, należy zaimplementować logikę ponawiania próby połączenia, ponowić próbę nawiązania połączenia zakończonego niepowodzeniem do momentu ponownego nawiązania połączenia.
Następujące właściwości połączenia są obsługiwane w programie Microsoft SqlClient Data Provider dla programu SQL Server:
ApplicationIntentMultiSubnetFailover
Możesz programowo zmodyfikować te słowa kluczowe parametrów połączenia za pomocą następujących elementów:
Nawiązywanie połączenia za pomocą funkcji MultiSubnetFailover
Zawsze określaj MultiSubnetFailover=True podczas nawiązywania połączenia z odbiornikiem grupy dostępności programu SQL Server 2012 lub wystąpieniem klastra trybu failover programu SQL Server 2012.
MultiSubnetFailover umożliwia szybsze przełączenie awaryjne dla wszystkich grup dostępności i wystąpienia klastra awaryjnego w programie SQL Server 2012 i znacznie skróci czas przełączenia awaryjnego dla topologii Always On na pojedynczej i wielu podsieciach. Podczas przełączania awaryjnego między wieloma podsieciami klient będzie próbował równolegle nawiązywać połączenia. Podczas awarii podsieci agresywnie ponowi próbę nawiązania połączenia TCP.
Właściwość MultiSubnetFailover połączenia wskazuje, że aplikacja jest wdrażana w grupie dostępności lub w wystąpieniu klastra trybu failover programu SQL Server 2012 i że SqlClient będzie próbował połączyć się z bazą danych na głównym wystąpieniu programu SQL Server, próbując nawiązać połączenie ze wszystkimi adresami IP. Gdy MultiSubnetFailover=True jest określony dla połączenia, klient ponawia próbę połączenia TCP szybciej niż domyślne interwały transmit TCP systemu operacyjnego. Umożliwia to szybsze ponowne nawiązywanie połączenia po failoverze grupy dostępności Always On lub wystąpienia klastra Always On Failover, i ma zastosowanie do grup dostępności i wystąpień klastra Failover zarówno w pojedynczej, jak i wielu podsieciach.
Aby uzyskać więcej informacji na temat słów kluczowych parametrów połączenia w programie SqlClient, zobacz ConnectionString.
Określenie MultiSubnetFailover=True podczas nawiązywania połączenia z urządzeniem innym niż odbiornik grupy dostępności lub wystąpienie klastra trybu failover programu SQL Server 2012 może spowodować negatywny wpływ na wydajność i nie jest obsługiwane.
Skorzystaj z poniższych wskazówek, aby nawiązać połączenie z serwerem w grupie dostępności lub wystąpieniu klastra trybu failover programu SQL Server 2012:
Użyj właściwości
MultiSubnetFailoverpołączenia podczas łączenia się z jedną podsiecią lub z wieloma podsieciami; poprawi to wydajność zarówno dla jednej, jak i wielu podsieci.Aby nawiązać połączenie z grupą dostępności, określ odbiornik tej grupy jako serwer w parametrach połączenia.
Nawiązywanie połączenia z wystąpieniem programu SQL Server skonfigurowanym z więcej niż 64 adresami IP spowoduje niepowodzenie połączenia.
Zachowanie aplikacji korzystającej z
MultiSubnetFailoverwłaściwości połączenia nie ma wpływu na typ uwierzytelniania: uwierzytelnianie programu SQL Server, uwierzytelnianie Kerberos lub uwierzytelnianie systemu Windows.Zwiększ wartość ,
Connect Timeoutaby uwzględnić czas pracy w trybie failover i zmniejszyć liczbę ponownych prób nawiązania połączenia z aplikacją.Transakcje rozproszone nie są obsługiwane.
Jeśli trasowanie tylko do odczytu nie jest aktywne, nawiązanie połączenia z lokalizacją repliki wtórnej zakończy się niepowodzeniem w następujących sytuacjach:
Jeśli lokalizacja repliki pomocniczej nie jest skonfigurowana do akceptowania połączeń.
Jeśli aplikacja używa
ApplicationIntent=ReadWrite(omówione poniżej), a lokalizacja repliki pomocniczej jest skonfigurowana jako dostępna tylko do odczytu.
SqlDependency nie jest obsługiwany w replikach pomocniczych tylko do odczytu.
Połączenie zakończy się niepowodzeniem, jeśli replika podstawowa jest skonfigurowana do odrzucania obciążeń tylko do odczytu, a ciąg połączenia zawiera ApplicationIntent=ReadOnly.
Przechodzenie na używanie klastry wielopodsieciowe zamiast mirroring bazy danych
Błąd połączenia (ArgumentException) wystąpi, jeśli słowa kluczowe MultiSubnetFailover i Failover Partner są obecne w ciągu znaków łączących lub jeśli używany jest MultiSubnetFailover=True oraz protokół inny niż TCP. Błąd (SqlException) wystąpi również, jeśli MultiSubnetFailover jest używany, a program SQL Server zwraca odpowiedź partnera trybu failover wskazującą, że jest częścią pary dublowania bazy danych.
Jeśli uaktualnisz aplikację SqlClient, która obecnie używa mirroringu bazy danych do scenariusza z wieloma podsieciami, usuń właściwość połączenia Failover Partner i zastąp ją ustawioną wartością MultiSubnetFailover dla True. Ponadto zastąp nazwę serwera w parametrach połączenia odbiornikiem grupy dostępności. Jeśli ciąg połączenia używa Failover Partner i MultiSubnetFailover=True, sterownik wygeneruje błąd. Jeśli jednak parametry połączenia używają Failover Partner oraz MultiSubnetFailover=False lub ApplicationIntent=ReadWrite, aplikacja będzie używać odbicia bazy danych.
Sterownik zwróci błąd, jeśli dublowanie bazy danych jest używane w podstawowej bazie danych w grupie dostępności i jeśli MultiSubnetFailover=True jest używane w parametrach połączenia łączących się z podstawową bazą danych zamiast z odbiornikiem grupy dostępności.
Określanie intencji aplikacji
Gdy ApplicationIntent=ReadOnly klient żąda operacji odczytu podczas nawiązywania połączenia z bazą danych z funkcją Always On. Serwer będzie wymuszać intencję w momencie połączenia i podczas instrukcji USE bazy danych, ale tylko w przypadku bazy danych z funkcją Always On.
Kluczowe słowo ApplicationIntent nie działa z przestarzałymi, tylko do odczytu bazami danych.
Baza danych może zezwalać na obciążenia odczytu w docelowej bazie danych Always On lub nie zezwalać na nie. (Odbywa się to za pomocą klauzuli ALLOW_CONNECTIONS w instrukcjach PRIMARY_ROLE i SECONDARY_ROLE Transact-SQL).
Słowo ApplicationIntent kluczowe służy do włączania routingu tylko do odczytu.
Rutowanie tylko odczytu
Routowanie zapytań tylko do odczytu to funkcja, która może zapewnić dostępność repliki tylko do odczytu bazy danych. Aby włączyć routing tylko do odczytu:
Należy nawiązać połączenie z odbiornikiem zawsze włączonej grupy dostępności.
Słowo kluczowe
ApplicationIntentw parametrze połączenia musi być ustawione doReadOnly.Aby umożliwić routing tylko do odczytu, należy skonfigurować grupę dostępności przez administratora bazy danych.
Istnieje możliwość, że wiele połączeń korzystających z routingu tylko do odczytu nie będzie łączyć się z tą samą repliką tylko do odczytu. Zmiany synchronizacji bazy danych lub zmiany konfiguracji routingu serwera mogą spowodować połączenia klientów z różnymi replikami tylko do odczytu. Aby upewnić się, że wszystkie żądania tylko do odczytu łączą się z tą samą repliką tylko do odczytu, nie przekazuj odbiornika grupy dostępności do słowa kluczowego Data Source parametrów połączenia. Zamiast tego określ nazwę wystąpienia tylko do odczytu.
Routing tylko do odczytu może trwać dłużej niż nawiązywanie połączenia z podstawowym, ponieważ routing tylko do odczytu najpierw łączy się z podstawowym, a następnie szuka najlepszej dostępnej pomocniczej możliwości odczytu. W związku z tym należy zwiększyć limit czasu logowania.