Esempio: Impostazione del mirroring del database tramite certificati (Transact-SQL)

In questo esempio vengono illustrati tutti i passaggi necessari per la creazione di una sessione di mirroring del database tramite l'autenticazione basata sui certificati. Negli esempi di questo argomento viene utilizzato Transact-SQL. Se non è possibile garantire la protezione della rete, è consigliabile utilizzare la crittografia per le connessioni per il mirroring del database.

Per copiare un certificato in un altro sistema, utilizzare un metodo di copia protetto. È molto importante tenere tutti i certificati in una posizione protetta.

Esempio

Nell'esempio seguente vengono descritte le operazioni necessarie in un partner che risiede in HOST_A. Nell'esempio i due partner sono le istanze predefinite del server in tre sistemi. Le due istanze server vengono eseguite in domini Windows non trusted, quindi è necessaria l'autenticazione basata sui certificati.

Il ruolo principale viene inizialmente assunto da HOST_A e il ruolo di server mirror da HOST_B.

La configurazione del mirroring del database eseguita tramite certificati è costituita da quattro fasi generali. Le fasi 1, 2 e 4 vengono illustrate in questo esempio. Le fasi sono le seguenti:

  1. Configurazione delle connessioni in uscita

    Nell'esempio riportato di seguito vengono illustrate le fasi seguenti:

    1. Configurazione di Host_A per le connessioni in uscita.

    2. Configurazione di Host_B per le connessioni in uscita.

    Per informazioni su questa fase di configurazione del mirroring del database, vedere Procedura: Impostazione del mirroring del database per l'utilizzo di certificati per le connessioni in uscita (Transact-SQL).

  2. Configurazione delle connessioni in ingresso

    Nell'esempio riportato di seguito vengono illustrate le fasi seguenti:

    1. Configurazione di Host_A per le connessioni in ingresso.

    2. Configurazione di Host_B per le connessioni in ingresso.

    Per informazioni su questa fase di configurazione del mirroring del database, vedere Procedura: Impostazione dell'utilizzo di certificati per le connessioni in entrata del mirroring del database (Transact-SQL).

  3. Creazione del database mirror

    Per informazioni sulla procedura di creazione di un database mirror, vedere Procedura: Preparazione di un database mirror per il mirroring (Transact-SQL).

  4. Configurazione dei partner del mirroring

Configurazione delle connessioni in uscita

Per configurare Host_A per le connessioni in uscita

  1. Nel database master creare la chiave master del database, se necessaria.

    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>';
    GO
    
  2. Creare un certificato per questa istanza del server.

    USE master;
    CREATE CERTIFICATE HOST_A_cert 
       WITH SUBJECT = 'HOST_A certificate';
    GO
    
  3. Creare un endpoint del mirroring per l'istanza del server che utilizza il certificato.

    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. Eseguire il backup del certificato di HOST_A e copiarlo nell'altro sistema, HOST_B.

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';
    GO
    
  5. Utilizzando un metodo di copia protetto, copiare C:\HOST_A_cert.cer in HOST_B.

Per configurare Host_B per le connessioni in uscita

  1. Nel database master creare la chiave master del database, se necessaria.

    USE master;
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';
    GO
    
  2. Creare un certificato per l'istanza del server in HOST_B.

    CREATE CERTIFICATE HOST_B_cert 
       WITH SUBJECT = 'HOST_B certificate for database mirroring';
    GO
    
  3. Creare un endpoint del mirroring per l'istanza del server in 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. Eseguire il backup del certificato di HOST_B.

    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';
    GO 
    
  5. Utilizzando un metodo di copia protetto, copiare C:\HOST_B_cert.cer in HOST_A.

Per ulteriori informazioni, vedere Procedura: Impostazione del mirroring del database per l'utilizzo di certificati per le connessioni in uscita (Transact-SQL).

[Torna all'inizio]

Configurazione delle connessioni in ingresso

Per configurare Host_A per le connessioni in ingresso

  1. In HOST_A creare un account di accesso per HOST_B.

    USE master;
    CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#';
    GO
    
  2. --Creare un utente per tale account di accesso.

    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
    GO
    
  3. --Associare il certificato all'utente.

    CREATE CERTIFICATE HOST_B_cert
       AUTHORIZATION HOST_B_user
       FROM FILE = 'C:\HOST_B_cert.cer'
    GO
    
  4. Concedere l'autorizzazione CONNECT per l'account di accesso per l'endpoint del mirroring remoto.

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

Per configurare Host_B per le connessioni in ingresso

  1. In HOST_B creare un account di accesso per HOST_A.

    USE master;
    CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';
    GO
    
  2. Creare un utente per tale account di accesso.

    CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
    GO
    
  3. Associare il certificato all'utente.

    CREATE CERTIFICATE HOST_A_cert
       AUTHORIZATION HOST_A_user
       FROM FILE = 'C:\HOST_A_cert.cer'
    GO
    
  4. Concedere l'autorizzazione CONNECT per l'account di accesso per l'endpoint del mirroring remoto.

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

Se si prevede di utilizzare la modalità a sicurezza elevata con failover automatico, è necessario ripetere gli stessi passaggi di impostazione per configurare il server di controllo del mirroring per connessioni in uscita e in ingresso. Per configurare le connessioni in ingresso per un server di controllo del mirroring è necessario impostare account di accesso e utenti per il server di controllo del mirroring in entrambi i partner e per entrambi i partner nel server di controllo del mirroring.

Per ulteriori informazioni, vedere Procedura: Impostazione dell'utilizzo di certificati per le connessioni in entrata del mirroring del database (Transact-SQL).

[Torna all'inizio]

Creazione del database mirror

Per informazioni sulla procedura di creazione di un database mirror, vedere Procedura: Preparazione di un database mirror per il mirroring (Transact-SQL).

Configurazione dei partner del mirroring

  1. Nell'istanza del server mirror in HOST_B, impostare l'istanza del server in HOST_A come partner (rendendola l'istanza iniziale del server principale). Specificare un indirizzo di rete valido per TCP://HOST_A.Mydomain.Corp.Adventure-Works.com:7024. Per ulteriori informazioni, vedere Impostazione di un indirizzo di rete del server (mirroring del database).

    --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. Nell'istanza del server principale in HOST_A, impostare l'istanza del server in HOST_B come partner (rendendola l'istanza iniziale del server mirror). Specificare un indirizzo di rete valido per 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 questo esempio si presuppone che la sessione verrà eseguita nella modalità a prestazioni elevate. Per configurare la sessione per la modalità a prestazioni elevate, nell'istanza del server principale (in HOST_A), impostare la protezione delle transazioni su OFF.

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

    [!NOTA]

    Se si prevede di utilizzare la modalità a sicurezza elevata con failover automatico, lasciare la sicurezza delle transazioni impostata su FULL (impostazione predefinita) e aggiungere il server di controllo del mirroring non appena possibile dopo l'esecuzione della seconda istruzione SET PARTNER 'partner_server'. Si osservi che è necessario configurare prima il server di controllo del mirroring per le connessioni in uscita e in ingresso.

[Torna all'inizio]

Vedere anche

Attivitá

Riferimento

Concetti