Udostępnij za pomocą


Dodawanie świadka odbicia lustrzanego bazy danych przy użyciu uwierzytelniania systemu Windows (Transact-SQL)

Dotyczy:SQL Server

Ostrzeżenie

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. W celu zapewnienia wysokiej dostępności zamiast tego użyj zawsze włączonych grup dostępności.

Ważne

Dublowanie baz danych w programie SQL Server to odrębna technologia od dublowania bazy danych usługi Microsoft Fabric. Dublowanie do Fabric zapewnia lepszą wydajność analizy, możliwość ujednolicenia zasobu danych z OneLake w Fabric i otwierania dostępu do danych w formacie Delta Parquet.

Dzięki funkcji mirroringu w usłudze Microsoft Fabric można stale replikować istniejące zasoby danych bezpośrednio do usługi OneLake w Microsoft Fabric, w tym danych z programu SQL Server 2016 lub nowszego, usługi Azure SQL Database, usługi Azure SQL Managed Instance, Cosmos DB, Oracle, Snowflake i nie tylko.

Aby skonfigurować świadka dla bazy danych, właściciel bazy danych przypisuje instancję silnika baz danych do roli serwera świadka. Wystąpienie serwera świadka może działać na tym samym komputerze co główne lub zwierciadlane wystąpienie serwera, ale znacząco zmniejsza to niezawodność automatycznego przełączenia awaryjnego.

Zdecydowanie zalecamy, aby świadek działał na osobnym komputerze. Dany serwer może uczestniczyć w wielu współbieżnych sesjach dublowania bazy danych z tymi samymi lub różnymi partnerami. Pewien serwer może być partnerem w niektórych sesjach i świadkiem w innych sesjach.

Świadek jest przeznaczony wyłącznie do trybu wysokiego bezpieczeństwa z automatycznym przełączaniem awaryjnym. Przed ustawieniem świadka zdecydowanie zalecamy upewnienie się, że właściwość SAFETY jest obecnie ustawiona na pełną wartość FULL.

Ważne

Zalecamy skonfigurowanie dublowania bazy danych poza godzinami szczytu, ponieważ konfiguracja może mieć wpływ na wydajność.

Ustanowienie świadka

  1. W wystąpieniu serwera świadka upewnij się, że punkt końcowy istnieje do dublowania bazy danych. Niezależnie od liczby obsługiwanych sesji dublowania wystąpienie serwera musi mieć tylko jeden punkt końcowy dublowania bazy danych. Jeśli zamierzasz używać tego wystąpienia serwera wyłącznie jako świadka w sesjach dublowania bazy danych, przypisz rolę świadka do punktu końcowego (ROLE**=**WITNESS). Jeśli zamierzasz użyć tego wystąpienia serwera jako partnera w co najmniej jednej innej sesji dublowania bazy danych, przypisz rolę punktu końcowego jako WSZYSTKIE.

    Aby wykonać instrukcję SET WITNESS, sesja mirrorowania bazy danych musi być już uruchomiona (między partnerami), a stan punktu końcowego świadka musi być ustawiony na URUCHOMIONO.

    Aby dowiedzieć się, czy wystąpienie serwera świadka ma swój punkt końcowy dublowania bazy danych oraz dowiedzieć się o jego roli i stanie, w tym wystąpieniu użyj następującej instrukcji Transact-SQL:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints  
    

    Ważne

    Jeśli punkt końcowy mirroringu bazy danych istnieje i jest już używany, zalecamy użycie tego punktu końcowego dla każdej sesji na instancji serwera. Usuwanie używanego punktu końcowego zakłóca połączenia istniejących sesji. Jeśli świadek został ustawiony dla sesji, usunięcie punktu końcowego mirroringu bazy danych może spowodować utratę kworum przez główny serwer tej sesji; w takim przypadku baza danych zostanie przełączona w tryb offline i jej użytkownicy zostaną odłączeni. Aby uzyskać więcej informacji, zobacz Kworum: Jak świadek wpływa na dostępność bazy danych (odbicie lustrzane bazy danych).

    Jeśli świadek nie ma punktu końcowego, zobacz Tworzenie punktu końcowego dublowania bazy danych na potrzeby uwierzytelniania systemu Windows (Transact-SQL).

  2. Jeśli wystąpienia partnerów działają w ramach różnych kont użytkowników domeny, utwórz identyfikator logowania dla różnych kont w bazie danych master każdego wystąpienia. Aby uzyskać więcej informacji, zobacz Zezwalanie na dostęp sieciowy do punktu końcowego dublowania bazy danych przy użyciu uwierzytelniania systemu Windows (SQL Server).

  3. Połącz się z serwerem głównym i wydaj następującą instrukcję:

    ALTER DATABASE <database_name> SET WITNESS =<server_network_address>

    gdzie <database_name> jest nazwą bazy danych, która ma być replikowana (ta nazwa jest taka sama dla obu partnerów), a <server_network_address> to adres sieciowy wystąpienia serwera świadka.

    Składnia adresu sieciowego serwera jest następująca:

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

    gdzie <adres-system> jest ciągiem, który jednoznacznie identyfikuje system komputera docelowego, a < port jest numerem portu> używanym przez punkt końcowy dublowania wystąpienia serwera partnerskiego. Aby uzyskać więcej informacji, zobacz Określanie adresu sieciowego serwera (dublowanie bazy danych).

    Na przykład w wystąpieniu serwera głównego następująca instrukcja ALTER DATABASE ustawia świadka. Nazwa bazy danych to AdventureWorks, adres systemu to DBSERVER3, a nazwa systemu świadka, a port używany przez punkt końcowy dublowania bazy danych świadka to 7022:

    ALTER DATABASE AdventureWorks   
      SET WITNESS = 'TCP://DBSERVER3:7022'  
    

Example

Poniższy przykład ustanawia świadka dublowania danych. W wystąpieniu serwera świadka (wystąpienie domyślne w systemie WITNESSHOST4):

  1. Utwórz punkt końcowy dla tego wystąpienia serwera dla roli WITNESS tylko przy użyciu portu 7022.

    CREATE ENDPOINT Endpoint_Mirroring  
        STATE=STARTED   
        AS TCP (LISTENER_PORT=7022)   
        FOR DATABASE_MIRRORING (ROLE=WITNESS)  
    GO  
    
  2. Utwórz login dla konta użytkownika domeny wystąpień partnerów, jeśli jest inny; załóżmy na przykład, że świadek działa jako SOMEDOMAIN\witnessuser, ale partnerzy działają jako MYDOMAIN\dbousername. Utwórz identyfikator logowania dla partnerów w następujący sposób:

    --Create a login for the partner server instances,  
    --which are both running as MYDOMAIN\dbousername:  
    USE master ;  
    GO  
    CREATE LOGIN [MYDOMAIN\dbousername] FROM WINDOWS ;  
    GO  
    --Grant connect permissions on endpoint to login account   
    --of partners  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [MYDOMAIN\dbousername];  
    GO  
    
  3. W każdym wystąpieniu serwera partnerskiego utwórz login dla wystąpienia serwera świadka.

    --Create a login for the witness server instance,  
    --which is running as SOMEDOMAIN\witnessuser:  
    USE master ;  
    GO  
    CREATE LOGIN [SOMEDOMAIN\witnessuser] FROM WINDOWS ;  
    GO  
    --Grant connect permissions on endpoint to login account   
    --of partners  
    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [SOMEDOMAIN\witnessuser];  
    GO  
    
  4. Na serwerze pierwotnym ustaw świadka (który znajduje się na WITNESSHOST4):

    ALTER DATABASE AdventureWorks   
        SET WITNESS =   
        'TCP://WITNESSHOST4:7022'  
    GO  
    

Uwaga / Notatka

Adres sieciowy serwera wskazuje na docelową instancję serwera poprzez numer portu, który jest przypisany do punktu końcowego odbicia tej instancji.

Pełny przykład przedstawiający konfigurację zabezpieczeń, przygotowanie bazy lustrzanej, skonfigurowanie partnerów i dodanie świadka zobacz Konfigurowanie dublowania bazy danych (SQL Server).

Zobacz też

ALTER DATABASE (Transact-SQL)
Zezwól na dostęp sieciowy do punktu końcowego mirroringu bazy danych z użyciem uwierzytelniania systemu Windows (SQL Server)
Tworzenie punktu końcowego mirroringu bazy danych na potrzeby uwierzytelniania systemu Windows (Transact-SQL)
Ustanów sesję dublowania bazy danych przy użyciu uwierzytelniania systemu Windows (Transact-SQL)
Usuwanie monitora z sesji dublowania bazy danych (SQL Server)
Świadek dublowania bazy danych