Making the Initial Connection to a Database Mirroring Session

Początkowego połączenia z bazą danych dublowane klient musi dostarczyć ciąg połączenia, który zapewnia minimalny zestaw nazwa wystąpienie serwera.Wymaga to nazwa serwera powinny określić bieżące wystąpienie serwer główny i jest znany jako Nazwa początkowego partner.

Opcjonalnie ciąg połączenia można także podać nazwę innego wystąpienia serwera, które określają bieżące wystąpienie serwer dublowany, do użytku, jeżeli początkowe partner jest niedostępna podczas pierwszej próby połączenia.Druga nazwa jest określana jako Nazwa partner pracy awaryjnej.

Ciąg połączenia należy również podać nazwę bazy danych.Jest to konieczne umożliwić prób przejęcia awaryjnego przez dostawca dostępu do danych.

Po otrzymaniu ciąg połączenia, Dostawca dostępu do danych przechowuje nazwy początkowej partnera i nazwa partner pracy awaryjnej, jeżeli podany w pamięci podręcznej w pamięci nietrwałej klient (dla kod zarządzany w pamięci podręcznej jest objęty zakresem do domena aplikacji).Po buforowane, Nazwa partner początkowe nigdy nie jest aktualizowany przez dostawca dostępu do danych.Gdy klient poda nazwę partner pracy awaryjnej, dostępu do danych dostawcy również są przechowywane tymczasowo nazwy tego partnera pracy awaryjnej przypadek gdy dostawca nie może połączyć się przy użyciu nazwy początkowej partnera.

Dublowanie sesja bazy danych nie chroni przed problemów dostęp do serwera, które są specyficzne dla klient s, np. przy klient występują problemy, komunikowanie się z siecią.Próba połączenia z bazą danych dublowane może także się nie powieść z różnych przyczyn, które są do dostawca dostępu do danych; na przykład, próba połączenia może się nie powieść, ponieważ wystąpienie serwer główny jest nieaktywny, ponieważ występuje, gdy baza danych jest możliwe, lub z powodu błędu sieciowego.

Podczas próby połączenia, za pomocą nazwy początkowej partner rozpoczyna się od dostawca dostępu do danych.Jeśli wystąpienie określonego serwera jest dostępny i jest bieżące wystąpienie serwer główny, zazwyczaj powiedzie się próba połączenia.

Uwaga

Jeśli sesja dublowanie jest wstrzymana, klient zwykle łączy się z głównej serwera i pliki do pobrania Nazwa partner.Jednak baza danych jest niedostępna dla klient do dublowanie wznawiane.

Jeśli próba ta nie działa, Dostawca dostępu do danych stara nazwa partner pracy awaryjnej, jeśli są dostępne.Jeśli nazwa partner albo poprawnie identyfikuje bieżący serwer główny, Dostawca dostępu do danych zwykle powiedzie się podczas otwierania połączenia początkowego.Na korzystanie z tego połączenia, Dostawca dostępu do danych pobiera nazwę wystąpienie serwera z bieżącego serwer dublowany.Ta nazwa jest przechowywana w pamięci podręcznej jako nazwa partnera pracy awaryjnej, zastępując nazwę partner pracy awaryjnej dostarczanych przez klientów, ewentualnych.Po tej dacie .NET Framework Data dostawca dla SQL Server nie aktualizuje nazwę partner pracy awaryjnej. Z drugiej strony, SQL Server Macierzysty klient aktualizacje w pamięci podręcznej przy każdym kolejnym połączeniu lub resetowanie połączenia zwraca nazwę innego partner.

Na poniższym rysunku pokazano połączenie klient do wstępnego partner Partner_A, dublowane bazy danych o nazwie Db_1.Na poniższym rysunku pokazano przypadek, w którym podana przez klient poprawnie Nazwa partner początkowy identyfikuje bieżący serwer główny Partner_A.Próba połączenia początkowego kończy się powodzeniem i Dostawca dostępu do danych jest przechowywana nazwa serwer dublowany (aktualnie Partner_B) jako nazwa partner pracy awaryjnej w lokalnej pamięci podręcznej.Wreszcie, klient łączy się z główną kopię Db_1 bazy danych.

Client connection if initial partner is principal

Próba połączenia początkowego może zakończyć się niepowodzeniem, na przykład z powodu błędu sieciowego lub wystąpienie serwera nieaktywne.Ponieważ początkowego partnera jest niedostępny, dostawca danych dostęp do próby połączenia się z partnerem pracy awaryjnej, klient musi podano nazwę partner pracy awaryjnej w ciąg połączenia.

W takim przypadek nazwa partner pracy awaryjnej jest niedostępny, oryginalne próba połączenia jest kontynuowane do przekroczenia limitu czasu połączenia sieciowego, lub (podobnie jak przypadek bazy danych innych niż dublowane), zwracany jest błąd.

Podczas pracy awaryjnej Nazwa partner jest podany w ciąg połączenia, zachowanie dostawca dostępu do danych zależy od protokół sieciowego i systemu operacyjnego klient, w następujący sposób:

  • Dla protokołu TCP/IP, jeśli klient jest uruchomiony system Microsoft Windows XP lub nowszym, próby połączenia są regulowane przez algorytm ponownych prób połączenia, które są specyficzne dla dublowanie bazy danych.The connection retry algorithm determines the maximum czas (the retry czas) allotted for opening a connection in a given connection attempt.Aby uzyskać więcej informacji zobaczPrzy użyciu słów kluczowych ciąg połączenia z SQL Server Native klient.

  • Dla innych protokołów sieciowych i klientów, którzy nie korzystają z systemu Microsoft Windows XP lub nowszym

    W przypadku wystąpienia błędu lub początkowy partner jest niedostępny, próba połączenia początkowego czeka, aż upływa limit czasu połączenia sieciowego lub limit czasu logowania wygasa dostawca dostępu do danych.Oczekiwanie na tym jest zwykle w celu o 20 do 30 sekund.Po tej dacie jeśli dostawca dostępu do danych nie upłynął limit czasu, podejmowana jest próba łączenia się z partner pracy awaryjnej.Limit czasu połączenia wygaonie, zanim połączenie zakończy się pomyślnie lub partner pracy awaryjnej jest niedostępny, nie powiedzie się próba połączenia.Jeśli partner pracy awaryjnej jest dostępna w ramach ustalonego limitu czasu logowania i jest teraz serwerem głównym, zwykle powiedzie się próba połączenia.

Ciągi połączeń dublowany bazy danych

Podany przez klient ciąg połączenia zawiera informacje, że dostępu do danych używa dostawca do łączenia się z bazą danych.W tej części omówiono słowa kluczowe, które dotyczą w szczególności do łączenia się z dublowanych bazy danych przy użyciu SQL Server Połączenie macierzysty sterownik ODBC klient. Aby uzyskać informacje na temat wszystkich słów kluczowych ciąg połączenia Zobacz Przy użyciu słów kluczowych ciąg połączenia z SQL Server Native klient.

Atrybut sieci

Ciąg połączenia powinien zawierać Sieci atrybut, aby określić protokół sieciowy. Pozwala to uzyskać pewność, że określony protokół sieciowy będzie dalej występował między połączeniami do różnych partnerów.Najlepsze protokół do łączenia się z bazą danych dublowany jest protokół TCP/IP.Aby upewnić się, że klient żąda protokołu TCP/IP dla każdego połączenia do partnerów, ciąg połączenia zawiera następującego atrybut:

Network=dbmssocn; 
Important noteImportant Note:

Zaleca się przechowywanie w górnej części listy protokół klient TCP/IP.Jednak jeśli określa ciąg połączenia Sieci atrybut zastępuje to na liście.

Można także w celu zapewnienia, że klient żąda nazwanych potoków dla każdego połączenia do partnerów, ciąg połączenia zawiera następujący atrybut:

Network=dbnmpntw; 
Important noteImportant Note:

Ponieważ potoków nazwanych Algorytm ponownych prób przesłania TCP/IP nie jest używany w wielu przypadkach nazwane potoki, próba połączenia może limit czas przed nawiązaniem połączenia z bazą danych dublowane.

Atrybut serwera

Ciąg połączenia musi zawierać Server atrybut, który dostarcza Nazwa partner początkowy powinien określać bieżące wystąpienie serwer główny.

The simplest way to identify the server instance is by specifying its name , <server_name>[\<SQL_Server_instance_name>].Na przykład:

Server=Partner_A;

lub

Server=Partner_A\Instance_2;

Gdy używana jest nazwa systemu, klient musi przeprowadzić wyszukiwanie DNS w celu uzyskania adresu IP serwera i kwerendy Przeglądarka SQL Server w celu uzyskania numeru portu serwera, na którym znajduje się z partner.Przedstawione w tych wyszukiwań i kwerendy można pominąć przez określenie numeru portu i adresem IP partner w Serwer atrybut, zamiast określania nazwa serwera. Jest to zalecane, aby zminimalizować możliwość zewnętrznych opóźnień podczas łączenia się z tym partner.

Uwaga

Przeglądarka SQL Server kwerenda jest to konieczne, jeśli ciąg połączenia określa nazwę wystąpienie z nazwą, a nie do portu.

Aby określić adres IP i portu, Serwer atrybut przyjmuje następującą postać Server=<adres_IP>,<Port>, na przykład:

Server=123.34.45.56,4724; 

Uwaga

Adres IP może być IP w wersja 4 (IPv4) lub IP w wersja 6 (IPv6).

Atrybut bazy danych

Ponadto należy określić ciąg połączenia Database atrybut o podanie nazwy dublowane bazy danych. Jeśli baza danych jest niedostępna, gdy klient będzie próbował podłączyć, zostanie zaokrąglona wyjątek.

Na przykład, aby połączyć się wyraźnie AdventureWorks bazy danych serwer główny Partner_A klient wykorzystuje następujący ciąg połączenia:

" Server=Partner_A; Database=AdventureWorks "

Uwaga

Ten ciąg pomija informacji uwierzytelniających.Aby uzyskać informacje na temat słów kluczowych zintegrowanego uwierzytelnianie Zobacz Przy użyciu słów kluczowych ciąg połączenia z SQL Server Native klient.

Important noteImportant Note:

Bundling prefiksu protokół z Serwer atrybut (Server=tcp:<nazwa_serwera>) jest niezgodna z Sieci atrybut oraz określenie protokół w oba miejsca będą prawdopodobnie spowodować błąd. Dlatego zaleca się, że określić ciąg połączenia, za pomocą protokół Sieci atrybutu i podaj tylko nazwa serwera w Serwer atrybut ("Network=dbmssocn; Server=<nazwa_serwera>").

Atrybut partner pracy awaryjnej

Oprócz nazwy początkowej partnera klient można określić nazwy partner pracy awaryjnej, który powinien określać bieżące wystąpienie serwer dublowany.Partner pracy awaryjnej jest określany przez jedną z kluczowych dla atrybut partner pracy awaryjnej.Słowo kluczowe dla tego atrybut zależy od tego, interfejs API, który jest używany.W poniższej tabela przedstawiono te słowa kluczowe:

INTERFEJSU API

Słowo kluczowe dla atrybut partner pracy awaryjnej

Dostawca OLE DB

FailoverPartner

Sterownik ODBC

Failover_Partner

ActiveX Data Objects (ADO)

Failover Partner

Aby uzyskać więcej informacji na temat słów kluczowych tych interfejsów API Zobacz Przy użyciu słów kluczowych ciąg połączenia z SQL Server Native klient.

The simplest way to identify the server instance is by its system name, <server_name>[\<SQL_Server_instance_name>].

Alternatywnie, numer portu i adresem IP mogą być dostarczane w Partner pracy awaryjnej atrybut. Jeśli próba połączenia początkowego nie powiedzie się podczas pierwszego połączenia z bazą danych, próba połączenia z partner pracy awaryjnej zostanie zwolniona z korzystania z usługi DNS i Przeglądarka SQL Server.Po nawiązaniu połączenia nazwa partner pracy awaryjnej zostanie zastąpiona nazwą partner pracy awaryjnej, więc jeśli występuje w trybie awaryjnym, przekierowanie połączeń wymaga usługi DNS i Przeglądarka SQL Server.

Uwaga

Jeśli tylko nazwa partner początkowy jest podane, deweloperzy aplikacji nie trzeba podejmować żadnych działań lub zapisać dowolny kod z wyjątkiem informacje dotyczące sposobu ponownego połączenia.

Uwaga

Deweloperzy aplikacji kod zarządzany podawania nazwy partner pracy awaryjnej w ConnectionString z SqlConnection obiekt. Aby uzyskać informacje dotyczące korzystania z tego ciąg połączenia, zobacz "dublowanie bazy danych pomocy technicznej w systemu .NET Framework danych dostawca dla SQL Server" w dokumentacji programu ADO.NET, wchodzącym w skład programu Microsoft System .NET framework SDK.

Przykład ciąg połączenia

Na przykład, aby bezpośrednio połączyć się przy użyciu protokołu TCP/IP w celu AdventureWorks bazy danych na Partner_A lub Partner_B aplikacji klient, który używa sterownika ODBC może dostarczyć następujący ciąg połączenia:

"Server=Partner_A; Failover_Partner=Partner_B; Database=AdventureWorks; Network=dbmssocn"

Alternatywnie klient może używać numer portu i adresem IP do identyfikowania początkowego partner Partner_A; na przykład, jeśli adres IP jest 250.65.43.21 i numer portu jest 4734, ciąg połączenia można:

"Server=250.65.43.21,4734; Failover_Partner=Partner_B; Database=AdventureWorks; Network=dbmssocn"