Vorgehensweise: Einrichten einer Datenbank-Spiegelungssitzung mithilfe der Windows-Authentifizierung (Transact-SQL)

Nachdem Sie die Spiegeldatenbank vorbereitet haben (siehe Vorgehensweise: Vorbereiten einer Spiegeldatenbank für die Spiegelung (Transact-SQL)), können Sie die Datenbank-Spiegelungssitzung einrichten. Die Prinzipal-, Spiegel- und Zeugenserverinstanzen müssen separate Serverinstanzen sein, die auf getrennten Hostsystemen ausgeführt werden.

Wichtiger HinweisWichtig

Die Konfiguration der Datenbankspiegelung sollte außerhalb der Spitzenbetriebszeiten durchgeführt werden, da sich die Konfiguration der Spiegelung auf die Leistung auswirken kann.

HinweisHinweis

Eine Serverinstanz kann an mehreren gleichzeitigen Datenbank-Spiegelungssitzungen mit den gleichen oder anderen Partnern teilnehmen. Eine Serverinstanz kann bei manchen Sitzungen als Partner und bei anderen Sitzungen als Zeuge dienen. Die Spiegelserverinstanz muss dieselbe Edition von SQL Server (entweder Standard oder Enterprise) als Prinzipalserverinstanz ausführen. Darüber hinaus wird die Ausführung auf vergleichbaren Systemen empfohlen, die identische Arbeitsauslastungen bewältigen können.

So richten Sie eine Datenbank-Spiegelungssitzung ein

  1. Erstellen Sie die Spiegeldatenbank. Weitere Informationen finden Sie unter Vorgehensweise: Vorbereiten einer Spiegeldatenbank für die Spiegelung (Transact-SQL).

  2. Richten Sie die Sicherheit auf jeder Serverinstanz ein.

    Jede Serverinstanz in einer Datenbank-Spiegelungssitzung benötigt einen eigenen Datenbank-Spiegelungsendpunkt. Falls der Endpunkt nicht vorhanden ist, müssen Sie ihn erstellen.

    HinweisHinweis

    Der für die Datenbankspiegelung von einer Serverinstanz verwendete Authentifizierungstyp ist eine Eigenschaft des Endpunkts der Datenbankspiegelung. Für die Datenbankspiegelung sind zwei Arten von Transportsicherheit verfügbar: die Windows-Authentifizierung oder die zertifikatbasierte Authentifizierung. Weitere Informationen finden Sie unter Transportsicherheit bei der Datenbankspiegelung.

    Stellen Sie sicher, dass auf allen Partnerservern ein Endpunkt für die Datenbankspiegelung vorhanden ist. Unabhängig von der Anzahl der zu unterstützenden Spiegelungssitzungen darf die Serverinstanz nur einen Endpunkt für die Datenbankspiegelung enthalten. Wenn Sie die Serverinstanz in Datenbank-Spiegelungssitzungen ausschließlich für Partner verwenden möchten, können Sie dem Endpunkt die Rolle Partner zuweisen (ROLE**=**PARTNER) zuweisen. Wenn Sie auch den Server in anderen Datenbank-Spiegelungssitzungen für Zeugen verwenden möchten, weisen Sie dem Endpunkt die Rolle ALL zu.

    Zum Ausführen der SET PARTNER-Anweisung muss die Option STATE der Endpunkte beider Partner auf STARTED festgelegt sein.

    Um zu erfahren, ob eine Serverinstanz einen Endpunkt für die Datenbankspiegelung besitzt, und um Informationen zu Rolle und Status der Serverinstanz zu erhalten, führen Sie auf der Instanz die folgende Transact-SQL-Anweisung aus:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints
    
    Wichtiger HinweisWichtig

    Ein bereits verwendeter Endpunkt für die Datenbankspiegelung darf nicht neu konfiguriert werden. Wenn ein Endpunkt für die Datenbankspiegelung vorhanden ist und bereits verwendet wird, sollte dieser Endpunkt auf der Serverinstanz für jede Sitzung verwendet werden. Wird ein bereits verwendeter Endpunkt gelöscht, kann dies zum erneuten Starten des Endpunkts führen, wodurch die Verbindungen der vorhandenen Sitzungen gestört werden, was von den anderen Serverinstanzen als Fehler interpretiert werden kann. Dies ist vor allem im Modus für hohe Sicherheit mit automatischem Failover wichtig, bei dem das Neukonfigurieren des Endpunkts auf einem Partner zur Ausführung eines Failovers führen könnte. Wenn für eine Sitzung zudem ein Zeuge festgelegt wurde, kann das Entfernen des Endpunkts für die Datenbankspiegelung dazu führen, dass der Prinzipalserver der Sitzung das Quorum verliert. In diesem Fall wird die Datenbank offline gebracht und die Verbindung mit den Benutzern getrennt. Weitere Informationen finden Sie unter Quorum: Auswirkungen eines Zeugen auf die Datenbankverfügbarkeit.

    In dem Fall, dass keiner der Partner einen Endpunkt besitzt, finden Sie weitere Informationen unter Vorgehensweise: Erstellen eines Endpunkts der Datenbankspiegelung für Windows-Authentifizierung (Transact-SQL).

  3. Wenn Serverinstanzen unter unterschiedlichen Domänenbenutzerkonten ausgeführt werden, erfordert jede Instanz einen Anmeldenamen in der master-Datenbank der anderen Instanzen. Falls der Anmeldename nicht vorhanden ist, müssen Sie ihn erstellen. Weitere Informationen finden Sie unter Vorgehensweise: Zulassen des Netzwerkzugriffs für die Datenbankspiegelung mithilfe der Windows-Authentifizierung (Transact-SQL).

  4. Um den Prinzipalserver als Partner auf der Spiegelungsdatenbank festzulegen, stellen Sie eine Verbindung mit dem Spiegelungsserver her, und geben Sie die folgende Anweisung aus:

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

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

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

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

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

    Auf der Spiegelserverinstanz wird z. B. mit der folgenden ALTER DATABASE-Anweisung der Partner als ursprüngliche Prinzipalserverinstanz festgelegt. Der Datenbankname lautet AdventureWorks2008R2, die Systemadresse ist DBSERVER1 - der Name des Partnersystems - und der vom Endpunkt für die Datenbankspiegelung des Partners verwendete Port ist 7022:

    ALTER DATABASE AdventureWorks2008R2 
       SET PARTNER = 'TCP://DBSERVER1:7022'
    

    Diese Anweisung bereitet den Spiegelserver darauf vor, eine Sitzung einzurichten, wenn er durch den Prinzipalserver kontaktiert wird.

  5. Um den Spiegelserver als Partner auf der Prinzipaldatenbank festzulegen, stellen Sie eine Verbindung mit dem Prinzipalserver her, und geben Sie die folgende Anweisung aus:

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    Weitere Informationen finden Sie unter Schritt 4.

    Auf der Prinzipalserverinstanz wird z. B. mit der folgenden ALTER DATABASE-Anweisung der Partner als ursprüngliche Spiegelserverinstanz festgelegt. Der Datenbankname lautet AdventureWorks2008R2, die Systemadresse ist DBSERVER2 (der Name des Partnersystems), und der Spiegelungsendpunkt der Partnerdatenbank verwendet den Port 7025:

    ALTER DATABASE AdventureWorks2008R2 SET PARTNER = 'TCP://DBSERVER2:7022'
    

    Durch Eingeben dieser Anweisung auf dem Prinzipalserver beginnt die Datenbankspiegelungssitzung.

  6. Standardmäßig ist für eine Sitzung die Transaktionssicherheitsstufe FULL festgelegt (SAFETY ist auf FULL festgelegt), wodurch die Sitzung im synchronen Modus für hohe Sicherheit ohne automatisches Failover gestartet wird. Sie können die Sitzung wie folgt umkonfigurieren, sodass sie entweder im Modus für hohe Sicherheit mit automatischem Failover oder im asynchronen Modus für hohe Leistung ausgeführt wird:

Beispiel

HinweisHinweis

Im folgenden Beispiel wird für eine vorhandene Spiegeldatenbank eine Datenbank-Spiegelungssitzung zwischen Partnern eingerichtet. Informationen zum Erstellen einer Spiegeldatenbank finden Sie unter Vorgehensweise: Vorbereiten einer Spiegeldatenbank für die Spiegelung (Transact-SQL).

Das Beispiel zeigt die grundlegenden Schritte zum Erstellen einer Datenbankspiegelungssitzung ohne einen Zeugen. Die zwei Partner sind die Standardserverinstanzen auf zwei Computersystemen (PARTNERHOST1 und PARTNERHOST5). Beide Partnerinstanzen führen dasselbe Windows-Domänenbenutzerkonto aus (MYDOMAIN\dbousername).

HinweisHinweis

Ein vollständiges Beispiel, das das Einrichten der Sicherheitsstufe, das Vorbereiten der Spiegeldatenbank, das Einrichten der Partner und das Hinzufügen eines Zeugen zeigt, finden Sie unter Einrichten der Datenbankspiegelung.

  1. Auf der Prinzipalserverinstanz (Standardinstanz auf PARTNERHOST1) erstellen Sie einen Endpunkt, der mithilfe von Port 7022 alle Rollen unterstützt:

    --create an endpoint for this instance
    CREATE ENDPOINT Endpoint_Mirroring
        STATE=STARTED 
        AS TCP (LISTENER_PORT=7022) 
        FOR DATABASE_MIRRORING (ROLE=ALL)
    GO
    --Partners under same domain user; login already exists in master.
    
  2. Auf der Spiegelserverinstanz (Standardinstanz auf PARTNERHOST5) erstellen Sie einen Endpunkt, der mithilfe von Port 7022 alle Rollen unterstützt:

    --create an endpoint for this instance
    CREATE ENDPOINT Endpoint_Mirroring
        STATE=STARTED 
        AS TCP (LISTENER_PORT=7022) 
        FOR DATABASE_MIRRORING (ROLE=ALL)
    GO
    --Partners under same domain user; login already exists in master.
    
  3. Auf der Prinzipalserverinstanz (auf PARTNERHOST1) sichern Sie die Datenbank:

    BACKUP DATABASE AdventureWorks2008R2 
        TO DISK = 'C:\AdvWorks_dbmirror.bak' 
        WITH FORMAT
    GO
    
  4. Stellen Sie auf der Spiegelserverinstanz (auf PARTNERHOST5) die Datenbank wieder her:

    RESTORE DATABASE AdventureWorks2008R2 
        FROM DISK = 'Z:\AdvWorks_dbmirror.bak' 
        WITH NORECOVERY
    GO
    
  5. Nach dem Erstellen der vollständigen Datenbanksicherung müssen Sie eine Protokollsicherung für die Prinzipaldatenbank erstellen. Mit der folgenden Transact-SQL-Anweisung wird beispielsweise das Protokoll in derselben Datei gesichert, die auch bei der vorhergehenden vollständigen Datenbanksicherung verwendet wurde:

    BACKUP LOG AdventureWorks2008R2 
        TO DISK = 'C:\AdventureWorks2008R2.bak' 
    GO
    
  6. Bevor die Spiegelung gestartet werden kann, müssen Sie die erforderliche Protokollsicherung (und gegebenenfalls nachfolgende Protokollsicherungen) anwenden.

    Mit der folgenden Transact-SQL-Anweisung wird z. B. das erste Protokoll aus C:\AdventureWorks2008R2.bak wiederhergestellt:

    RESTORE LOG AdventureWorks2008R2 
        FROM DISK = 'C:\ AdventureWorks2008R2.bak' 
        WITH FILE=1, NORECOVERY
    GO
    
  7. Legen Sie die Serverinstanz für die Spiegelserverinstanz auf PARTNERHOST1 als Partner fest (wodurch sie zum ersten Prinzipalserver wird):

    USE master;
    GO
    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER = 
        'TCP://PARTNERHOST1:7022'
    GO
    
    Wichtiger HinweisWichtig

    Eine Datenbankspiegelungssitzung wird standardmäßig im synchronen Modus ausgeführt, wozu die Transaktionssicherheitsstufe FULL verwendet wird (SAFETY auf FULL festgelegt sein muss). Um eine Sitzung im asynchronen Modus für hohe Leistung auszuführen, legen Sie SAFETY auf OFF fest. Weitere Informationen finden Sie unter Datenbank-Spiegelungssitzungen und Vorgehensweise: Ändern der Transaktionssicherheit in einer Datenbank-Spiegelungssitzung (Transact-SQL).

  8. Legen Sie auf der Prinzipalserverinstanz die Serverinstanz auf PARTNERHOST5 als Partner fest (wodurch sie zum ersten Spiegelserver wird):

    USE master;
    GO
    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER = 'TCP://PARTNERHOST5:7022'
    GO
    
  9. Optional oder wenn Sie den Modus für hohe Sicherheit mit automatischem Failover verwenden möchten, richten Sie die Zeugenserverinstanz ein. Weitere Informationen finden Sie unter Vorgehensweise: Hinzufügen eines Zeugen für die Datenbankspiegelung mithilfe der Windows-Authentifizierung (Transact-SQL).

HinweisHinweis

Ein vollständiges Beispiel, das das Einrichten der Sicherheitsstufe, das Vorbereiten der Spiegeldatenbank, das Einrichten der Partner und das Hinzufügen eines Zeugen zeigt, finden Sie unter Einrichten der Datenbankspiegelung.