Udostępnij za pomocą


ALTER DATABASE (Transact-SQL) Lustrzane odbicie bazy danych

Dotyczy:SQL Server

Uwaga / Notatka

Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zamiast tego użyj grup dostępności Always On.

Steruje lustrzanym odbiciem bazy danych dla bazy danych. Wartości określone w opcjach mirroringu bazy danych dotyczą zarówno kopii bazy danych, jak i całej sesji mirroringu. Na każde oświadczenie ALTER DATABASE dozwolony jest tylko jeden <database_mirroring_option> .

Uwaga / Notatka

Zalecamy konfigurację mirroringu bazy danych poza godzinami szczytu, ponieważ konfiguracja może wpływać na wydajność.

Aby poznać opcje ALTER DATABASE, zobacz ALTER DATABASE. Aby zobaczyć opcje ALTER DATABASE SET, zobacz ALTER DATABASE SET Options.

Transact-SQL konwencje składni

Składnia


ALTER DATABASE database_name
SET { <partner_option> | <witness_option> }
  <partner_option> ::=
    PARTNER { = 'partner_server'
            | FAILOVER
            | FORCE_SERVICE_ALLOW_DATA_LOSS
            | OFF
            | RESUME
            | SAFETY { FULL | OFF }
            | SUSPEND
            | TIMEOUT integer
            }
  <witness_option> ::=
    WITNESS { = 'witness_server'
            | OFF
            }
  

Arguments

Ważne

Polecenie SET PARTNER lub SET WITNESS może zakończyć się pomyślnie po wprowadzeniu, ale później się nie zdarzyć.

Uwaga / Notatka

Opcje lustrzanego kopiowania bazy danych ALTER DATABASE nie są dostępne dla bazy danych zamkniętych.

database_name To nazwa bazy danych, która ma być modyfikowana.

PARTNER <partner_option> Kontroluje właściwości bazy danych definiujących partnerów awaryjnego sesji mirroring oraz ich zachowanie. Niektóre opcje SET PARTNER można ustawić na obu partnerach; inne są ograniczone do serwera głównego lub serwera lustrzanego. Więcej informacji znajdziesz w poniższych indywidualnych opcjach PARTNER. Klauzula PARTNER ZBIORU wpływa na obie kopie bazy danych, niezależnie od partnera, na którym jest określona.

Aby wykonać polecenie SET PARTNER, STAN punktów końcowych obu partnerów musi być ustawiony na START. Należy również zauważyć, że ROLA punktu końcowego mirroringu bazy danych każdego serwera partnerskiego musi być ustawiona na PARTNER lub ALL. Aby uzyskać informacje o tym, jak określić punkt końcowy, zobacz Utworzenie punktu bazowego mirroring dla uwierzytelniania Windows. Aby poznać rolę i stan punktu końcowego mirroringu bazy danych instancji serwera, na tej instancji użyj następującego Transact-SQL polecenia:

SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints

<partner_option> ::=

Uwaga / Notatka

Dozwolony jest tylko jeden <partner_option> w klauzuli SET PARTNER.

'partner_server' Określa adres sieciowy serwera instancji SQL Server, który ma działać jako partner do przełączania awaryjnego w nowej sesji mirroring bazy danych. Każda sesja wymaga dwóch partnerów: jeden zaczyna jako główny serwer, a drugi jako serwer lustrzany. Zalecamy, aby ci partnerzy pracowali na różnych komputerach.

Ta opcja jest określana raz na sesję dla każdego partnera. Inicjacja sesji mirroring w bazie danych wymaga dwóch instrukcji ALTER DATABASE database SET PARTNER ='partner_server' . Ich kolejność jest znacząca. Najpierw połącz się z serwerem lustrzanym i określ główną instancję serwera jako partner_server (SET PARTNER ='principal_server'). Po drugie, połączyć się z głównym serwerem i określić instancję serwera lustrzanego jako partner_server (SET PARTNER ='mirror_server'); To rozpoczyna sesję mirroring bazy danych między tymi dwoma partnerami. Więcej informacji można znaleźć w artykule Setting Up Database Mirroring.

Wartość partner_server to adres sieciowy serwera. Składnia ta ma następującą składnię:

TCP**://<system-address>:**<port>

where

  • <Adres> systemowy to ciąg znaków, taki jak nazwa systemowa, w pełni kwalifikowana domena lub adres IP, który jednoznacznie identyfikuje docelowy system komputerowy.
  • <port> to numer portu powiązany z punktem lustrzanym instancji serwera partnerskiego.

Więcej informacji można znaleźć w artykule Określ adres sieci serwera – Lustrzane odbicie bazy danych.

Poniższy przykład ilustruje klauzulę SET PARTNER ='partner_server':

'TCP://MYSERVER.mydomain.Adventure-Works.com:7777'

Ważne

Jeśli sesja zostanie skonfigurowana za pomocą instrukcji ALTER DATABASE zamiast SQL Server Management Studio, sesja jest domyślnie ustawiona na pełne bezpieczeństwo transakcji (SAFETY ustawione na FULL) i działa w trybie wysokiego bezpieczeństwa bez automatycznego przełączania awaryjnego. Aby umożliwić automatyczne przełączanie awaryjne, skonfiguruj świadka; Aby działać w trybie wysokiej wydajności, wyłącz bezpieczeństwo transakcji (SAFETY OFF).

FAILOVER Ręcznie przechodzi przez główny serwer do serwera lustrzanego. Możesz określić FAILOVER tylko na głównym serwerze. Ta opcja jest ważna tylko wtedy, gdy ustawienie BEZPIECZEŃSTWO jest PEŁNE (domyślne).

Opcja FAILOVER wymaga mastera jako kontekstu bazy danych.

FORCE_SERVICE_ALLOW_DATA_LOSS wymusza usługę bazy danych do mirror database, gdy serwer główny ulegnie awarii, gdy baza danych jest w stanie niezsynchronizowanym lub w stanie synchronizowanym, gdy nie następuje automatyczne przełączanie awaryjne.

Zdecydowanie zalecamy wymuszanie obsługi tylko wtedy, gdy główny serwer przestaje działać. W przeciwnym razie niektórzy klienci mogą nadal korzystać z oryginalnej głównej bazy danych zamiast nowej głównej. FORCE_SERVICE_ALLOW_DATA_LOSS jest dostępny tylko na serwerze lustrzanym i tylko pod wszystkimi następującymi warunkami:

  • Główny serwer nie działa.
  • WITNESS jest ustawiony na OFF lub świadek jest połączony z serwerem lustrzanym.

Wymusz usługę tylko wtedy, gdy jesteś gotów zaryzykować utratę części danych, aby natychmiast przywrócić usługę do bazy danych.

Wymuszanie usługi zawiesza sesję, tymczasowo zachowując wszystkie dane z oryginalnej głównej bazy danych. Gdy oryginalny główny serwer jest już w stanie działać i komunikować się z nowym głównym serwerem, administrator bazy danych może wznowić działalność. Po wznowieniu sesji tracone są wszelkie niewysłane rekordy dziennika oraz odpowiadające im aktualizacje.

WYŁĄCZONE: Usuwa sesję mirroringu bazy danych i usuwa mirroring z bazy danych. Możesz określić WYŁĄCZONE dla każdego partnera. Informacje można znaleźć w artykule o wpływie usunięcia mirroringu w sekcji Usuwanie mirroringu bazy danych.

RESUME Wznawia zawieszoną sesję mirroringu bazy danych. Możesz określić RESUME tylko na głównym serwerze.

BEZPIECZEŃSTWO { FULL | WYŁĄCZ } Ustawia poziom bezpieczeństwa transakcji. Możesz określić BEZPIECZEŃSTWO tylko na głównym serwerze.

Domyślnie jest PEŁNE. Przy pełnym bezpieczeństwie sesja mirroringu bazy danych przebiega synchronicznie (w trybie wysokiego bezpieczeństwa). Jeśli SAFETY jest ustawione na WYŁĄCZONE, sesja mirroringu bazy danych działa asynchronicznie (w trybie wysokiej wydajności).

Zachowanie trybu wysokiego bezpieczeństwa zależy częściowo od świadka, w następujący sposób:

  • Gdy bezpieczeństwo jest ustawione na PEŁNE, a na sesję ustawiony jest świadek, sesja działa w trybie wysokiego bezpieczeństwa z automatycznym przełączaniem awaryjnym. Gdy serwer główny zostanie utracony, sesja automatycznie przechodzi na awarię, jeśli baza danych jest zsynchronizowana, a instancja serwera lustrzanego i świadek nadal są ze sobą połączone (czyli mają kworum). Więcej informacji można znaleźć w artykule Kworum: Jak świadek wpływa na dostępność bazy danych – mirroring bazy danych.

    Jeśli na sesję ustawiono świadka, ale jest obecnie rozłączony, utrata serwera lustrzanego powoduje awarię serwera głównego.

  • Gdy bezpieczeństwo jest ustawione na PEŁNE, a świadek na WYŁĄCZONE, sesja działa w trybie wysokiego bezpieczeństwa bez automatycznego przełączania awaryjnego. Jeśli instancja serwera lustrzanego przestanie działać, główna instancja serwera pozostaje niedotknięta. Jeśli główna instancja serwera przestanie działać, możesz wymusić usługę (z możliwą utratą danych) do instancji serwera lustrzanego.

  • Jeśli SAFETY jest ustawione na WYŁĄCZONE, sesja przebiega w trybie wysokiej wydajności, a automatyczne przełączanie awaryjne i ręczne nie są obsługiwane. Jednak problemy na lustrze nie dotyczą principal, a jeśli instancja serwera głównego przestanie działać, można, jeśli zajdzie taka potrzeba, wymusić usługę (z możliwą utratą danych) do instancji serwera lustrzanego – jeśli WITNESS jest ustawiony na OFF lub świadek jest obecnie połączony z lustrzanym odbiciem. Więcej informacji o wymuszaniu służby można znaleźć w sekcji "FORCE_SERVICE_ALLOW_DATA_LOSS" wcześniej w tej sekcji.

Ważne

Tryb wysokiej wydajności nie jest przeznaczony do użycia świadka. Jednak za każdym razem, gdy ustawiasz SAFETY na WYŁĄCZONE, zdecydowanie zalecamy, abyś upewnił się, że WITNESS jest ustawiony na WYŁĄCZONE.

ZAWIESZENIE Pauzuje sesję mirroringu bazy danych.

Możesz określić ZAWIESZENIE u każdego partnera.

TIMEOUT integer Określa okres timeoutu w sekundach. Okres wygaśnięcia to maksymalny czas, jaki instancja serwera czeka na otrzymanie wiadomości PING od innej instancji w sesji lustrzanej, zanim uzna tę instancję za rozłączoną.

Możesz wybrać opcję TIMEOUT tylko na głównym serwerze. Jeśli nie określisz tej opcji, domyślnie czas wynosi 10 sekund. Jeśli podasz 5 lub więcej, czas przejścia jest ustawiony na określoną liczbę sekund. Jeśli określisz wartość limitu od 0 do 4 sekund, okres wyłączenia jest automatycznie ustawiany na 5 sekund.

Ważne

Zalecamy zachowanie limitu czasu na 10 sekund lub dłużej. Ustawienie wartości na mniej niż 10 sekund stwarza możliwość, że system z dużym obciążeniem może nie zawierać PING-ów i deklarować fałszywą awarię.

Więcej informacji można znaleźć w artykule Możliwe awarie podczas mirroringu bazy danych.

WITNESS <witness_option> Kontroluje właściwości bazy danych definiujących świadka mirroringu bazy danych. Klauzula SET WITNESS wpływa na obie kopie bazy danych, ale możesz określić SET WITNESS tylko na głównym serwerze. Jeśli świadek zostanie wyznaczony na sesję, kworum jest wymagane do doręczenia bazie danych, niezależnie od ustawienia BEZPIECZEŃSTWA; Więcej informacji można znaleźć w artykule Kworum: Jak świadek wpływa na dostępność bazy danych – Lustrzane odbicie bazy danych.

Zalecamy, aby świadek i partnerzy przełączający się na awaryjnych komputerach przebywali na osobnych komputerach. Informacje o świadku można znaleźć w sekcji Database Mirroring Witness.

Aby wykonać polecenie SET WITNESS, STAN punktów końcowych zarówno instancji serwera głównego, jak i świadka musi być ustawiony na START. Należy również zauważyć, że ROLA punktu końcowego mirroringu bazy danych instancji serwera świadka musi być ustawiona na ŚWIADKA lub ALL. Aby uzyskać informacje o określaniu punktu końcowego, zobacz The Database Mirroring Endpoint.

Aby poznać rolę i stan punktu końcowego mirroringu bazy danych instancji serwera, na tej instancji użyj następującego Transact-SQL polecenia:

SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints

Uwaga / Notatka

Właściwości bazy danych nie mogą być ustawiane na świadku.

<witness_option> ::=

Uwaga / Notatka

Dozwolony jest tylko jeden <witness_option> zgodnie z klauzulą SET WITNESS.

'witness_server' Określa instancję silnika bazy danych, która działa jako serwer świadka sesji mirroringu bazy danych. Możesz określić instrukcje SET WITNESS tylko na serwerze głównym.

W instrukcji SET WITNESS ='witness_server' składnia witness_server jest taka sama jak składnia partner_server.

WYŁĄCZONE: Usuwa świadka z sesji mirroringu bazy danych. Ustawienie świadka na WYŁĄCZONE wyłącza automatyczne przełączanie awaryjne. Jeśli baza danych jest ustawiona na PEŁNE BEZPIECZEŃSTWO, a świadek na WYŁĄCZONE, awaria serwera lustrzanego powoduje, że główny serwer staje się bazą danych niedostępną.

Uwagi

Przykłady

A. Tworzenie sesji mirroringu bazy danych ze świadkiem

Ustawienie mirroringu bazy danych ze świadkiem wymaga skonfigurowania zabezpieczeń i przygotowania bazy lustrzanej, a także użycia ALTER DATABASE do ustawienia partnerów. Przykład pełnego procesu konfiguracji można znaleźć w artykule Setting Up Database Mirroring.

B. Ręczne przejście przez sesję mirroring bazy danych

Ręczne przełączanie awaryjne może być inicjowane przez dowolnego partnera do mirroringu bazy danych. Przed przejściem na awarację powinieneś sprawdzić, czy serwer, który uważasz za obecny główny, faktycznie jest głównym serwerem. Na przykład, dla bazy AdventureWorks2025 danych, na instancji serwera, którą uważasz za aktualny serwer główny, wykonaj następujące zapytanie:

SELECT db.name, m.mirroring_role_desc
FROM sys.database_mirroring m
JOIN sys.databases db
ON db.database_id = m.database_id
WHERE db.name = N'AdventureWorks2022';
GO

Jeśli instancja serwera jest faktycznie główną instancją, wartość mirroring_role_desc wynosi .Principal Jeśli ta instancja serwera byłaby serwerem lustrzanym, SELECT instrukcja zwracałaby Mirror.

Poniższy przykład zakłada, że serwer jest aktualnym głównym użytkownikiem.

  1. Ręcznie przełącz się na partnera do mirroringu bazy danych:

    ALTER DATABASE AdventureWorks2022 SET PARTNER FAILOVER;
    GO
    
  2. Aby zweryfikować wyniki przełączania awaryjnego na nowym lustrzanym odbiciu, wykonaj następujące zapytanie:

    SELECT db.name, m.mirroring_role_desc
    FROM sys.database_mirroring m
    JOIN sys.databases db
    ON db.database_id = m.database_id
    WHERE db.name = N'AdventureWorks2022';
    GO
    

Aktualna wartość wynosi mirroring_role_desc teraz Mirror.

Zobacz też