Beispiel: Einrichten der Datenbankspiegelung mithilfe von Zertifikaten (Transact-SQL)

In diesem Beispiel werden sämtliche Schritte erläutert, die für das Erstellen einer Datenbank-Spiegelungssitzung mithilfe der zertifikatbasierten Authentifizierung erforderlich sind. In den Beispielen in diesem Thema wird Transact-SQL verwendet. Wenn die Sicherheit Ihres Netzwerks nicht garantiert ist, wird empfohlen, Verschlüsselung für Datenbankspiegelungsverbindungen zu verwenden.

Verwenden Sie zum Kopieren eines Zertifikats auf ein anderes System eine sichere Kopiermethode. Lassen Sie große Vorsicht walten, damit die Sicherheit aller Zertifikate gewahrt bleibt.

Beispiel

Das folgende Beispiel zeigt, welche Aktionen für einen der Partner ausgeführt werden müssen, der auf HOST_A gespeichert ist. In diesem Beispiel sind die beiden Partner die Standardserverinstanzen auf drei Computersystemen. Die beiden Serverinstanzen werden in nicht vertrauenswürdigen Windows-Domänen ausgeführt, daher ist zertifikatbasierte Authentifizierung erforderlich.

HOST_A übernimmt die anfängliche Prinzipalrolle, während die Spiegelrolle von HOST_B übernommen wird.

Das Einrichten der Datenbankspiegelung mithilfe von Zertifikaten umfasst vier allgemeine Phasen, von den drei Phasen, nämlich 1, 2 und 4, in diesem Beispiel demonstriert werden. Nachfolgend sind diese Phasen aufgeführt:

  1. Konfigurieren ausgehender Verbindungen

    Im Beispiel werden die Schritte für folgende Aufgaben veranschaulicht.

    1. Konfigurieren von Host_A für ausgehende Verbindungen

    2. Konfigurieren von Host_B für ausgehende Verbindungen

    Weitere Informationen zu dieser Phase des Einrichtens der Datenbankspiegelung finden Sie unter Vorgehensweise: Ermöglichen des Verwendens von Zertifikaten für ausgehende Verbindungen für die Datenbankspiegelung (Transact-SQL).

  2. Konfigurieren eingehender Verbindungen

    Im Beispiel werden die Schritte für folgende Aufgaben veranschaulicht.

    1. Konfigurieren von Host_A für eingehende Verbindungen

    2. Konfigurieren von Host_B für eingehende Verbindungen

    Weitere Informationen zu dieser Phase des Einrichtens der Datenbankspiegelung finden Sie unter Vorgehensweise: Ermöglichen des Verwendens von Zertifikaten für eingehende Verbindungen für die Datenbankspiegelung (Transact-SQL).

  3. Erstellen der Spiegeldatenbank

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

  4. Konfigurieren der Spiegelungspartner

Konfigurieren ausgehender Verbindungen

So konfigurieren Sie Host_A für ausgehende Verbindungen

  1. Erstellen Sie in der master-Datenbank den Datenbankhauptschlüssel, sofern erforderlich.

    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>';
    GO
    
  2. Erstellen Sie ein Zertifikat für diese Serverinstanz.

    USE master;
    CREATE CERTIFICATE HOST_A_cert 
       WITH SUBJECT = 'HOST_A certificate';
    GO
    
  3. Erstellen Sie einen Spiegelungsendpunkt für die Serverinstanz, die das Zertifikat verwendet.

    CREATE ENDPOINT Endpoint_Mirroring
       STATE = STARTED
       AS TCP (
          LISTENER_PORT=7024
          , LISTENER_IP = ALL
       ) 
       FOR DATABASE_MIRRORING ( 
          AUTHENTICATION = CERTIFICATE HOST_A_cert
          , ENCRYPTION = REQUIRED ALGORITHM AES
          , ROLE = ALL
       );
    GO
    
  4. Sichern Sie das Zertifikat von HOST_A, und kopieren Sie es auf das andere System, HOST_B.

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';
    GO
    
  5. Kopieren Sie C:\HOST_A_cert.cer mithilfe einer sicheren Kopiermethode auf HOST_B.

So konfigurieren Sie Host_B für ausgehende Verbindungen

  1. Erstellen Sie in der master-Datenbank den Datenbankhauptschlüssel, sofern erforderlich.

    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';
    GO
    
  2. Erstellen Sie ein Zertifikat auf der Serverinstanz HOST_B.

    CREATE CERTIFICATE HOST_B_cert 
       WITH SUBJECT = 'HOST_B certificate for database mirroring';
    GO
    
  3. Erstellen Sie einen Spiegelungsendpunkt für die Serverinstanz auf HOST_B.

    CREATE ENDPOINT Endpoint_Mirroring
       STATE = STARTED
       AS TCP (
          LISTENER_PORT=7024
          , LISTENER_IP = ALL
       ) 
       FOR DATABASE_MIRRORING ( 
          AUTHENTICATION = CERTIFICATE HOST_B_cert
          , ENCRYPTION = REQUIRED ALGORITHM AES
          , ROLE = ALL
       );
    GO
    
  4. Sichern Sie das Zertifikat von HOST_B.

    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';
    GO 
    
  5. Kopieren Sie C:\HOST_B_cert.cer mithilfe einer sicheren Kopiermethode auf HOST_A.

Weitere Informationen finden Sie unter Vorgehensweise: Ermöglichen des Verwendens von Zertifikaten für ausgehende Verbindungen für die Datenbankspiegelung (Transact-SQL).

[Nach oben]

Konfigurieren eingehender Verbindungen

So konfigurieren Sie Host_A für eingehende Verbindungen

  1. Erstellen Sie auf HOST_A einen Anmeldenamen für HOST_B.

    USE master;
    CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#';
    GO
    
  2. -- Erstellen Sie einen Benutzer für diesen Anmeldenamen.

    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
    GO
    
  3. -- Ordnen Sie das Zertifikat dem Benutzer zu.

    CREATE CERTIFICATE HOST_B_cert
       AUTHORIZATION HOST_B_user
       FROM FILE = 'C:\HOST_B_cert.cer'
    GO
    
  4. Erteilen Sie dem Anmeldenamen die CONNECT-Berechtigung für den Remotespiegelungsendpunkt.

    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
    GO
    

So konfigurieren Sie Host_B für eingehende Verbindungen

  1. Erstellen Sie auf HOST_B einen Anmeldenamen für HOST_B.

    USE master;
    CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';
    GO
    
  2. Erstellen Sie einen Benutzer für diesen Anmeldenamen.

    CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
    GO
    
  3. Ordnen Sie das Zertifikat dem Benutzer zu.

    CREATE CERTIFICATE HOST_A_cert
       AUTHORIZATION HOST_A_user
       FROM FILE = 'C:\HOST_A_cert.cer'
    GO
    
  4. Erteilen Sie dem Anmeldenamen die CONNECT-Berechtigung für den Remotespiegelungsendpunkt.

    GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
    GO
    
Wichtiger HinweisWichtig

Wenn Sie die Ausführung im Modus für hohe Sicherheit mit automatischem Failover planen, müssen Sie die gleichen Setupschritte zum Konfigurieren des Zeugen für aus- und eingehende Verbindungen ausführen. Für das Setup der eingehenden Verbindungen bei Verwendung eines Zeugen ist es erforderlich, Anmeldungen und Benutzer für den Zeugen auf beiden Partnern und für beide Partner auf dem Zeugen einzurichten.

Weitere Informationen finden Sie unter Vorgehensweise: Ermöglichen des Verwendens von Zertifikaten für eingehende Verbindungen für die Datenbankspiegelung (Transact-SQL).

[Nach oben]

Erstellen der Spiegeldatenbank

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

Konfigurieren der Spiegelungspartner

  1. Legen Sie für die Spiegelserverinstanz auf HOST_B die Serverinstanz auf HOST_A als Partner fest (hierdurch wird sie zur ersten Prinzipalserverinstanz): Ersetzen Sie TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024 durch eine gültige Netzwerkadresse. Weitere Informationen finden Sie unter Angeben einer Server-Netzwerkadresse (Datenbankspiegelung).

    --At HOST_B, set server instance on HOST_A as partner (principal server):
    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER = 'TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024';
    GO
    
  2. Legen Sie für die Prinzipalserverinstanz auf HOST_A die Serverinstanz auf HOST_B als Partner fest (hierdurch wird sie zur ersten Spiegelserverinstanz): Ersetzen Sie TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024 durch eine gültige Netzwerkadresse.

    --At HOST_A, set server instance on HOST_B as partner (mirror server).
    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER = 'TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024';
    GO
    
  3. Dieses Beispiel geht davon aus, dass die Sitzung im Modus für hohe Verfügbarkeit ausgeführt wird. Wenn Sie diese Sitzung für den Modus für hohe Verfügbarkeit konfigurieren möchten, legen Sie die Transaktionssicherheit für die Prinzipalserverinstanz (auf HOST_A) auf OFF fest.

    --Change to high-performance mode by turning off transacton safety.
    ALTER DATABASE AdventureWorks2008R2 
        SET PARTNER SAFETY OFF;
    GO
    
    HinweisHinweis

    Wenn die Ausführung im Modus für hohe Sicherheit mit automatischem Failover geplant ist, sollte die Transaktionssicherheit auf FULL (die Standardeinstellung) festgelegt bleiben und der Zeuge so schnell wie möglich nach Ausführung der zweiten SET PARTNER 'partner_server'-Anweisung hinzugefügt werden. Beachten Sie, dass der Zeuge zuerst für aus- und eingehende Verbindungen konfiguriert werden muss.

[Nach oben]

Siehe auch

Aufgaben

Verweis

Konzepte