Vorgehensweise: Hinzufügen eines Zeugen für die Datenbankspiegelung mithilfe der Windows-Authentifizierung (Transact-SQL)

Um einen Zeugen für eine Datenbank einzurichten, weist der Datenbankbesitzer einer Instanz des Datenbankmoduls die Rolle des Zeugenservers zu. Die Zeugenserverinstanz kann auf demselben Computer wie die Prinzipal- oder Spiegelserverinstanz ausgeführt werden. Hierdurch wird jedoch die Zuverlässigkeit des automatischen Failovers erheblich reduziert.

Wir raten dringend, den Zeugen auf einem separaten Computer zu platzieren. Ein Server kann an mehreren gleichzeitigen Datenbank-Spiegelungssitzungen mit den gleichen oder anderen Partnern teilnehmen. Ein Server kann bei manchen Sitzungen als Partnerserver und bei anderen Sitzungen als Zeugenserver dienen.

Der Zeugenserver ist ausschließlich für den Modus für hohe Sicherheit mit automatischem Failover gedacht. Bevor Sie einen Zeugen festlegen, sollten Sie unbedingt sicherstellen, dass die SAFETY-Eigenschaft auf FULL festgelegt ist.

Wichtiger HinweisWichtig

Es empfiehlt sich, die Konfiguration der Datenbankspiegelung außerhalb der Spitzenbetriebszeiten durchzuführen, da sich die Konfiguration auf die Leistung auswirken kann.

So richten Sie einen Zeugen ein

  1. Stellen Sie für die Zeugenserverinstanz sicher, dass ein Endpunkt für die Datenbankspiegelung vorhanden ist. Unabhängig von der Anzahl von Spiegelungssitzungen, die unterstützt werden sollen, darf die Serverinstanz nur einen Endpunkt der Datenbankspiegelung aufweisen. Wenn Sie diese Serverinstanz ausschließlich als Zeugen bei Datenbank-Spiegelungssitzungen verwenden möchten, weisen Sie dem Endpunkt die Rolle des Zeugen zu (ROLE**=**WITNESS). Wenn Sie diese Serverinstanz als Partner bei mindestens einer Datenbank-Spiegelungssitzung verwenden möchten, weisen Sie die Rolle des Endpunkts als ALL zu.

    Zum Ausführen einer SET WITNESS-Anweisung muss die Datenbank-Spiegelungssitzung bereits gestartet sein (zwischen den Partnern), und als STATE muss für den Endpunkt des Zeugen STARTED festgelegt sein.

    Zur Feststellung, ob die Zeugenserverinstanz einen Endpunkt der Datenbankspiegelung aufweist, und zur Feststellung von deren Rolle und Status verwenden Sie in dieser Instanz die folgende Transact-SQL-Anweisung:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints
    
    Wichtiger HinweisWichtig

    Wenn ein Endpunkt für die Datenbankspiegelung vorhanden ist und bereits verwendet wird, empfiehlt es sich, diesen Endpunkt auf der Serverinstanz für jede Sitzung zu verwenden. Durch Löschen eines verwendeten Endpunkts werden die Verbindungen der vorhandenen Sitzungen getrennt. Wenn für eine Sitzung ein Zeuge festgelegt wurde, kann das Löschen des Endpunkts für die Datenbankspiegelung dazu führen, dass der Prinzipalserver der Sitzung das Quorum verliert. In diesem Fall wird die Datenbank offline geschaltet und die Verbindung mit den Benutzern getrennt. Weitere Informationen finden Sie unter Quorum: Auswirkungen eines Zeugen auf die Datenbankverfügbarkeit.

    Falls dem Zeugen ein Endpunkt fehlt, finden Sie weitere Informationen unter Vorgehensweise: Erstellen eines Endpunkts der Datenbankspiegelung für Windows-Authentifizierung (Transact-SQL).

  2. Wenn die Partnerinstanzen unter unterschiedlichen Domänenbenutzerkonten ausgeführt werden, müssen Sie in der Master-Datenbank jeder Instanz eine Anmeldung für die einzelnen Konten erstellen. Weitere Informationen finden Sie unter Vorgehensweise: Zulassen des Netzwerkzugriffs für die Datenbankspiegelung mithilfe der Windows-Authentifizierung (Transact-SQL).

  3. Stellen Sie anhand der folgenden Anweisung eine Verbindung mit dem Prinzipalserver her:

    ALTER DATABASE <database_name> SET WITNESS =<server_network_address>

    Dabei ist <database_name> der Name der zu spiegelnden Datenbank (dieser Name ist auf beiden Partnern gleich) und <server_network_address> die Servernetzwerkadresse der Zeugenserverinstanz.

    Für das Angeben einer Servernetzwerkadresse gilt folgende Syntax:

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

    Dabei ist <system-address> eine Zeichenfolge, die das Zielcomputersystem eindeutig identifiziert, und <port> ist die vom Spiegelungsendpunkt der Partnerserverinstanz verwendete Portnummer. Weitere Informationen finden Sie unter Angeben einer Server-Netzwerkadresse (Datenbankspiegelung).

    Beispiel: Auf der Prinzipalserverinstanz wird mit folgender ALTER DATABASE-Anweisung der Zeuge festgelegt. Der Datenbankname ist AdventureWorks2008R2, die Systemadresse ist DBSERVER3 – der Name des Zeugensystems, und der vom Datenbankspiegelungsendpunkt des Zeugen verwendet Port ist 7022:

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

Beispiel

Das folgende Beispiel erstellt einen Datenspiegelungszeugen. Auf der Zeugenserverinstanz (Standardinstanz auf WITNESSHOST4):

  1. Erstellen Sie einen Endpunkt für diese Serverinstanz für die WITNESS-Rolle, die ausschließlich Port 7022 verwendet.

    CREATE ENDPOINT Endpoint_Mirroring
        STATE=STARTED 
        AS TCP (LISTENER_PORT=7022) 
        FOR DATABASE_MIRRORING (ROLE=WITNESS)
    GO
    
  2. Erstellen Sie eine Anmeldung für das Domänenbenutzerkonto der Partnerinstanzen, sofern dieses unterschiedlich ist. Wenn z. B. der Zeuge als SOMEDOMAIN\witnessuser ausgeführt wird, die Partner aber als MYDOMAIN\dbousername. Erstellen Sie die Anmeldung für Partner wie folgt:

    --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. Erstellen Sie auf jeder Serverinstanz eine Anmeldung für die Zeugenserverinstanz:

    --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. Legen Sie auf dem Prinzipalserver den Zeugen fest (der sich auf WITNESSHOST4 befindet):

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

Die Servernetzwerkadresse gibt die Zielserverinstanz über die Portnummer an, die auf den Spiegelungsendpunkt der Instanz verweist.

Ein vollständiges Beispiel mit Sicherheitssetup, Vorbereitung der Spiegeldatenbank, Einrichten der Partner und Hinzufügen eines Zeugen finden Sie unter Einrichten der Datenbankspiegelung.