Udostępnij za pośrednictwem


Dublowanie bazy danych w programie SQL Server

Dublowanie bazy danych w programie SQL Server umożliwia przechowywanie kopii lub dublowania bazy danych programu SQL Server na serwerze rezerwowym. Dublowanie gwarantuje, że przez cały czas istnieją dwie oddzielne kopie danych, zapewniając wysoką dostępność i kompletną nadmiarowość danych. Program .NET Dostawca danych dla programu SQL Server zapewnia niejawną obsługę dublowania baz danych, dzięki czemu deweloper nie musi podejmować żadnych działań ani pisać kodu po skonfigurowaniu jej dla bazy danych programu SQL Server. Ponadto obiekt obsługuje jawny tryb połączenia, SqlConnection który umożliwia podanie nazwy serwera partnera trybu failover w programie ConnectionString.

Następująca uproszczona sekwencja zdarzeń występuje dla obiektu, który jest przeznaczony dla SqlConnection bazy danych skonfigurowanej do dublowania:

  1. Aplikacja kliencka pomyślnie łączy się z główną bazą danych, a serwer wysyła z powrotem nazwę serwera partnerskiego, który jest następnie buforowany na kliencie.

  2. Jeśli serwer zawierający główną bazę danych ulegnie awarii lub połączenie zostanie przerwane, połączenie i stan transakcji zostanie utracony. Aplikacja kliencka próbuje ponownie nawiązać połączenie z główną bazą danych i kończy się niepowodzeniem.

  3. Następnie aplikacja kliencka w sposób niewidoczny próbuje nawiązać połączenie z bazą danych dublowania na serwerze partnerskim. Jeśli to się powiedzie, połączenie zostanie przekierowane do dublowanej bazy danych, która stanie się nową główną bazą danych.

Określanie partnera trybu failover w ciągu Połączenie ion

Jeśli podasz nazwę serwera partnera trybu failover w parametry połączenia, klient będzie w przezroczysty sposób próbował nawiązać połączenie z partnerem trybu failover, jeśli główna baza danych jest niedostępna, gdy aplikacja kliencka po raz pierwszy nawiąż połączenie.

";Failover Partner=PartnerServerName"  

Jeśli pominiesz nazwę serwera partnera trybu failover, a główna baza danych będzie niedostępna, gdy aplikacja kliencka najpierw nawiąż połączenie, zostanie zgłoszony element SqlException .

SqlConnection Po pomyślnym otwarciu elementu nazwa partnera trybu failover jest zwracana przez serwer i zastępuje wszystkie wartości podane w parametry połączenia.

Uwaga

Musisz jawnie określić początkową nazwę katalogu lub bazy danych w parametry połączenia dla scenariuszy dublowania bazy danych. Jeśli klient odbiera informacje o przejściu w tryb failover na połączeniu, które nie ma jawnie określonego katalogu początkowego lub bazy danych, informacje o trybie failover nie są buforowane, a aplikacja nie próbuje przejść w tryb failover, jeśli serwer główny ulegnie awarii. Jeśli parametry połączenia ma wartość partnera trybu failover, ale nie jest zgłaszana żadna InvalidArgumentException wartość dla początkowego wykazu lub bazy danych.

Pobieranie bieżącej nazwy serwera

W przypadku przejścia w tryb failover można pobrać nazwę serwera, z którym jest rzeczywiście połączone bieżące połączenie przy użyciu DataSource właściwości SqlConnection obiektu. Poniższy fragment kodu pobiera nazwę aktywnego serwera, przy założeniu, że zmienna połączenia odwołuje się do otwartego SqlConnection.

Gdy wystąpi zdarzenie trybu failover i połączenie zostanie przełączone na serwer dublowany, właściwość DataSource zostanie zaktualizowana w celu odzwierciedlenia nazwy dublowania.

Dim activeServer As String = connection.DataSource  
string activeServer = connection.DataSource;  

Zachowanie dublowania sqlClient

Klient zawsze próbuje nawiązać połączenie z bieżącym serwerem głównym. Jeśli zakończy się to niepowodzeniem, spróbuje uruchomić partnera trybu failover. Jeśli baza danych dublowania została już przełączona do roli głównej na serwerze partnerskim, połączenie powiedzie się, a nowe mapowanie dublowania podmiotu zabezpieczeń jest wysyłane do klienta i buforowane przez okres istnienia wywołania .AppDomain Nie jest on przechowywany w magazynie trwałym i nie jest dostępny dla kolejnych połączeń w innej domenie aplikacji lub w innym procesie. Jest ona jednak dostępna dla kolejnych połączeń w ramach tej samej domeny aplikacji. Należy pamiętać, że inny element AppDomain lub proces uruchomiony na tym samym lub innym komputerze zawsze ma pulę połączeń, a te połączenia nie są resetowane. W takim przypadku, jeśli podstawowa baza danych ulegnie awarii, każdy proces lub element AppDomain zakończy się niepowodzeniem, a pula zostanie automatycznie wyczyszczone.

Uwaga

Obsługa dublowania na serwerze jest konfigurowana dla poszczególnych baz danych. Jeśli operacje manipulowania danymi są wykonywane względem innych baz danych nieuwzględnianych w zestawie podmiotów zabezpieczeń/dublowania, używając nazw wieloczęściowych lub zmieniając bieżącą bazę danych, zmiany w tych innych bazach danych nie są propagowane w przypadku awarii. Błąd nie jest generowany, gdy dane są modyfikowane w bazie danych, która nie jest dublowana. Deweloper musi ocenić możliwy wpływ takich operacji.

Zasoby dublowania bazy danych

Aby uzyskać dokumentację koncepcyjną i informacje na temat konfigurowania, wdrażania i administrowania dublowaniem, zobacz następujące zasoby w dokumentacji programu SQL Server.

Zasób opis
Dublowanie bazy danych Opisuje sposób konfigurowania i konfigurowania dublowania w programie SQL Server.

Zobacz też