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

Gilt für:SQL Server

Um einen Zeugen für eine Datenbank einzurichten, weist der Datenbankbesitzer einer Instanz der Datenbank-Engine 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.

Wichtig

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

Einrichten eines Zeugen

  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  
    

    Wichtig

    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 (Datenbankspiegelung).

    Wenn für einen Zeugen kein Endpunkt vorhanden ist, informieren Sie sich unter 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 Zulassen des Netzwerkzugriffs auf einen Datenbank-Spiegelungsendpunkt mithilfe der Windows-Authentifizierung (SQL Server).

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

    ALTER DATABASE <Datenbankname> SET WITNESS =<Servernetzwerkadresse>

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

    Die Syntax für eine Server-Netzwerkadresse lautet folgendermaßen:

    TCP://<Systemadresse>:<Port>

    Dabei ist <Systemadresse> eine Zeichenfolge, die das Zielcomputersystem eindeutig identifiziert, und <Port> ist die vom Spiegelungsendpunkt der Partnerserverinstanz verwendete Portnummer. Weitere Informationen finden Sie unter Angeben einer Servernetzwerkadresse (Datenbankspiegelung).

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

    ALTER DATABASE AdventureWorks   
      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 7022verwendet.

    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\witnessuserausgefü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 WITNESSHOST4befindet):

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

Hinweis

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

Ein vollständiges Beispiel für das Anzeigen des Sicherheitssetups, das Vorbereiten der Spiegeldatenbank, das Einrichten der Partner und das Hinzufügen eines Zeugen finden Sie unter Einrichten der Datenbankspiegelung (SQL Server).

Weitere Informationen

ALTER DATABASE (Transact-SQL)
Zulassen des Netzwerkzugriffs auf einen Datenbank-Spiegelungsendpunkt mithilfe der Windows-Authentifizierung (SQL Server)
Erstellen eines Endpunkts der Datenbankspiegelung für Windows-Authentifizierung (Transact-SQL)
Einrichten einer Datenbank-Spiegelungssitzung mithilfe der Windows-Authentifizierung (Transact-SQL)
Entfernen des Zeugen aus einer Datenbank-Spiegelungssitzung (SQL Server)
Datenbank-Spiegelungszeuge