Udostępnij przez


Dublowanie bazy danych w programie SQL Server

Pobieranie ADO.NET

Uwaga / Notatka

Dublowanie baz danych w programie SQL Server to odrębna technologia od dublowania bazy danych usługi Microsoft Fabric.

Dublowanie bazy danych w programie SQL Server umożliwia przechowywanie kopii lub dublowania bazy danych programu SQL Server na serwerze rezerwowym. Dublowanie gwarantuje, że zawsze istnieją dwie oddzielne kopie danych, zapewniając wysoką dostępność i pełną nadmiarowość danych. Dostawca Programu Microsoft SqlClient dla programu SQL Server zapewnia niejawną obsługę dublowania baz danych. Deweloper nie musi wykonywać żadnych czynności po skonfigurowaniu klienta 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 buforuje klient.
  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 parametrach połączenia

Jeśli podasz nazwę serwera partnera trybu failover w parametrach połączenia, a główna baza danych będzie niedostępna, gdy aplikacja kliencka nawiąże połączenie, to klient automatycznie spróbuje nawiązać połączenie z serwerem partnera trybu failover.

";Failover Partner=PartnerServerName"

Jeśli pominiesz nazwę serwera partnera trybu failover, a główna baza danych będzie niedostępna, gdy aplikacja kliencka połączy się po raz pierwszy, SqlException wystąpi.

SqlConnection Po pomyślnym otwarciu serwera zwraca nazwę partnera trybu failover, która zastępuje wszystkie wartości podane w parametrach połączenia.

Uwaga / Notatka

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 uzyskać nazwę serwera, z którym połączone jest bieżące połączenie, przy użyciu właściwości DataSource obiektu SqlConnection. Poniższy fragment kodu pobiera nazwę aktywnego serwera, przy założeniu, że zmienna połączenia odwołuje się do otwartego SqlConnection.

Po wystąpieniu zdarzenia failover i przełączeniu połączenia na serwer lustrzany właściwość DataSource zostanie zaktualizowana w celu odzwierciedlenia nazwy serwera lustrzanego.

string activeServer = connection.DataSource;

Zachowanie mirroringu SqlClient

Klient zawsze próbuje nawiązać połączenie z 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 przyszłych połączeń w innej domenie aplikacji ani w innym procesie. Jest ona jednak dostępna dla późniejszych połączeń w ramach tej samej domeny aplikacji. Inna domena aplikacji 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 AppDomain zakończy się niepowodzeniem, a pula zostanie automatycznie wyczyszczona.

Uwaga / Notatka

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.

Dalsze kroki

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.

Resource Description
Dublowanie bazy danych Opisuje sposób konfigurowania i konfigurowania dublowania w programie SQL Server.