Voorbeeld: Databasespiegeling instellen met behulp van certificaten (Transact-SQL)

Van toepassing op:SQL Server

In dit voorbeeld ziet u alle fasen die vereist zijn voor het maken van een databasespiegelingssessie met behulp van verificatie op basis van certificaten. In de voorbeelden in dit onderwerp wordt Transact-SQL gebruikt. Tenzij u kunt garanderen dat uw netwerk veilig is, raden we u aan versleuteling te gebruiken voor databasespiegelingsverbindingen.

Wanneer u een certificaat naar een ander systeem kopieert, gebruikt u een veilige kopieermethode. Wees uiterst voorzichtig om al uw certificaten veilig te houden.

Example

In het volgende voorbeeld ziet u wat er moet gebeuren voor één partner die zich op HOST_A bevindt. In dit voorbeeld zijn de twee partners de standaardserverexemplaren op drie computersystemen. De twee serverexemplaren worden uitgevoerd in niet-vertrouwde Windows domeinen, dus verificatie op basis van certificaten is vereist.

De eerste hoofdrol wordt genomen door HOST_A en de spiegelrol wordt genomen door HOST_B.

Het instellen van databasespiegeling met behulp van certificaten omvat vier algemene fasen, waarvan drie fasen-1, 2 en 4-worden gedemonstreerd in dit voorbeeld. Deze fasen zijn als volgt:

  1. Uitgaande verbindingen configureren

    In dit voorbeeld ziet u de stappen voor:

    1. Configureren van Host_A voor uitgaande verbindingen.

    2. Configureren van Host_B voor uitgaande verbindingen.

    Zie Een databasespiegelingseindpunt toestaan certificaten te gebruiken voor uitgaande verbindingen (Transact-SQL) voor meer informatie over deze fase van het instellen van databasespiegeling.

  2. Binnenkomende verbindingen configureren

    In dit voorbeeld ziet u de stappen voor:

    1. Configureren van Host_A voor binnenkomende verbindingen.

    2. Configureren van Host_B voor binnenkomende verbindingen.

    Zie Een databasespiegelingseindpunt toestaan certificaten te gebruiken voor binnenkomende verbindingen (Transact-SQL) voor meer informatie over deze fase van het instellen van databasespiegeling.

  3. De gespiegelde database maken

    Zie Een gespiegelde database voorbereiden voor spiegeling (SQL Server) voor meer informatie over het maken van een gespiegelde database.

  4. De spiegelingspartners configureren

Uitgaande verbindingen configureren

Host_A configureren voor uitgaande verbindingen

  1. Maak zo nodig in de hoofddatabase de mastersleutel van de database. Vervang <password> door een geldig wachtwoord.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';  
    GO  
    
  2. Maak een certificaat voor deze serverinstantie.

    USE master;  
    CREATE CERTIFICATE HOST_A_cert   
       WITH SUBJECT = 'HOST_A certificate';  
    GO  
    
  3. Maak een spiegelingseindpunt voor serverexemplaren met behulp van het certificaat.

    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. Maak een back-up van het HOST_A-certificaat en kopieer het naar een ander systeem, HOST_B.

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';  
    GO  
    
  5. Kopieer C:\HOST_A_cert.cer met behulp van een veilige kopieermethode naar HOST_B.

Host_B configureren voor uitgaande verbindingen

  1. Maak in de systeemdatabase master indien nodig de basishoofdsleutel van de database.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';  
    GO  
    
  2. Maak een certificaat voor de HOST_B-serverinstantie.

    CREATE CERTIFICATE HOST_B_cert   
       WITH SUBJECT = 'HOST_B certificate for database mirroring';  
    GO  
    
  3. Maak een eindpunt voor spiegeling voor de serverinstantie op 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. Maak een back-up van HOST_B certificaat.

    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';  
    GO   
    
  5. Kopieer C:\HOST_B_cert.cer met behulp van een veilige kopieermethode naar HOST_A.

Zie Toestaan dat een eindpunt voor databasespiegeling certificaten gebruikt voor uitgaande verbindingen (Transact-SQL)voor meer informatie.

[Begin van voorbeeld]

Binnenkomende verbindingen configureren

Host_A configureren voor binnenkomende verbindingen

  1. Maak een aanmelding op HOST_A voor HOST_B. Vervang <password> door een geldig wachtwoord.

    USE master;  
    CREATE LOGIN HOST_B_login WITH PASSWORD = '<password>';  
    GO  
    
  2. --Maak een gebruiker voor die aanmelding.

    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  
    GO  
    
  3. --Koppel het certificaat aan de gebruiker.

    CREATE CERTIFICATE HOST_B_cert  
       AUTHORIZATION HOST_B_user  
       FROM FILE = 'C:\HOST_B_cert.cer'  
    GO  
    
  4. Verdeel CONNECT-machtigingen voor de aanmelding voor het eindpunt voor externe spiegeling.

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

Host_B configureren voor binnenkomende verbindingen

  1. Maak een aanmelding op HOST_B voor HOST_A.

    USE master;  
    CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';  
    GO  
    
  2. Maak een gebruiker voor die aanmelding.

    CREATE USER HOST_A_user FOR LOGIN HOST_A_login;  
    GO  
    
  3. Koppel het certificaat aan de gebruiker.

    CREATE CERTIFICATE HOST_A_cert  
       AUTHORIZATION HOST_A_user  
       FROM FILE = 'C:\HOST_A_cert.cer'  
    GO  
    
  4. Verdeel CONNECT-machtigingen voor de aanmelding voor het eindpunt voor externe spiegeling.

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

Important

Als u van plan bent te werken in de modus met hoge veiligheid en automatische failover, moet u dezelfde configuratiestappen herhalen om de witness-server te configureren voor uitgaande en inkomende verbindingen. Voor het instellen van de binnenkomende verbindingen wanneer een witness betrokken is, moet u aanmeldingen en gebruikers instellen voor de witness op beide partners en voor beide partners op de witness.

Zie Toestaan dat een eindpunt voor databasespiegeling certificaten gebruikt voor inkomende verbindingen (Transact-SQL) voor meer informatie.

[Begin van voorbeeld]

De gespiegelde database maken

Zie Een gespiegelde database voorbereiden voor spiegeling (SQL Server) voor meer informatie over het maken van een gespiegelde database.

De spiegelingspartners configureren

  1. Stel op het spiegelserverexemplaar op HOST_B het serverexemplaar op HOST_A in als partner (waarmee dit het initiële hoofdserverexemplaar wordt). Vervang een geldig netwerkadres voor TCP://HOST_A.Mydomain.Corp.Adventure-Works``.com:7024. Zie Een servernetwerkadres opgeven (databasespiegeling) voor meer informatie.

    --At HOST_B, set server instance on HOST_A as partner (principal server):  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024';  
    GO  
    
  2. Stel op de primaire serverinstantie op HOST_A de serverinstantie op HOST_B in als partner (waardoor dit de initiële spiegelserverinstantie wordt). Vervang een geldig netwerkadres voor TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024.

    --At HOST_A, set server instance on HOST_B as partner (mirror server).  
    ALTER DATABASE AdventureWorks   
        SET PARTNER = 'TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024';  
    GO  
    
  3. In dit voorbeeld wordt ervan uitgegaan dat de sessie wordt uitgevoerd in de modus met hoge prestaties. Als u deze sessie wilt configureren voor de modus voor hoge prestaties, stelt u op de primaire serverinstantie (op HOST_A) de transactieveiligheid in op UIT.

    --Change to high-performance mode by turning off transaction safety.  
    ALTER DATABASE AdventureWorks   
        SET PARTNER SAFETY OFF  
    GO  
    

    Note

    Als u van plan bent in de modus voor hoge veiligheid met automatische failover te werken, laat transactieveiligheid dan ingesteld op FULL (de standaardinstelling) en voeg de getuige zo snel mogelijk toe na het uitvoeren van de tweede SET PARTNER 'partner_server'-instructie. Houd er rekening mee dat de witness eerst moet worden geconfigureerd voor uitgaande en binnenkomende verbindingen.

[Begin van voorbeeld]

Gerelateerde taken

Zie ook

Transportbeveiliging voor Database Mirroring en Always On Availability Groups (SQL Server)
Een servernetwerkadres opgeven (databasespiegeling)
Het Eindpunt voor Databasespiegeling (SQL Server)
Certificaten gebruiken voor een eindpunt voor databasespiegeling (Transact-SQL)
ALTER DATABASE (Transact-SQL)
Security Center voor SQL Server Database Engine en Azure SQL Database