Esempio: Impostazione del mirroring del database tramite certificati (Transact-SQL)Example: Setting Up Database Mirroring Using Certificates (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.This example shows all the stages required to create a database mirroring session using certificate-based authentication. Negli esempi di questo argomento viene utilizzato Transact-SQLTransact-SQL.The examples in this topic use Transact-SQLTransact-SQL. A meno che la sicurezza della rete in uso non sia già garantita, è consigliabile utilizzare la crittografia per le connessioni per il mirroring del database.Unless you can guarantee that your network is secure, we recommend that you use encryption for database mirroring connections.

Quando si copia un certificato in un altro sistema, utilizzare un metodo di copia sicuro.When copying a certificate to another system, use a secure copy method. È estremamente importante garantire la protezione di tutti i certificati.Be extremely careful to keep all of your certificates secure.

Esempio Example

Nell'esempio seguente vengono descritte le operazioni necessarie in un partner che risiede in HOST_A.The following example demonstrates what must be done on one partner that resides on HOST_A. Nell'esempio i due partner sono le istanze predefinite del server in tre sistemi.In this example, the two partners are the default server instances on three computer systems. Le due istanze server vengono eseguite in domini Windows non trusted, quindi è necessaria l'autenticazione basata sui certificati.The two server instances run in nontrusted Windows domains, so certificate-based authentication is required.

Il ruolo principale viene inizialmente assunto da HOST_A e il ruolo di server mirror da HOST_B.The initial principal role is taken by HOST_A, and the mirror role is taken by 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.Setting up database mirroring using certificates involves four general stages, of which three stages—1, 2, and 4—are demonstrated by this example. Le fasi sono le seguenti:These stages are as follows:

  1. Configurazione delle connessioni in uscitaConfiguring Outbound Connections

    Nell'esempio riportato di seguito vengono illustrate le fasi seguenti:This example shows the steps for:

    1. Configurazione di Host_A per le connessioni in uscita.Configuring Host_A for outbound connections.

    2. Configurazione di Host_B per le connessioni in uscita.Configuring Host_B for outbound connections.

      Per informazioni su questa fase di configurazione del mirroring del database, vedere Impostazione dell'endpoint del mirroring del database per l'utilizzo di certificati per le connessioni in uscita (Transact-SQL).For information about this stage of setting up database mirroring, see Allow a Database Mirroring Endpoint to Use Certificates for Outbound Connections (Transact-SQL).

  2. Configurazione delle connessioni in ingressoConfiguring Inbound Connections

    Nell'esempio riportato di seguito vengono illustrate le fasi seguenti:This example shows the steps for:

    1. Configurazione di Host_A per le connessioni in ingresso.Configuring Host_A for inbound connections.

    2. Configurazione di Host_B per le connessioni in ingresso.Configuring Host_B for inbound connections.

      Per informazioni su questa fase di configurazione del mirroring del database, vedere Impostazione dell'endpoint del mirroring del database per l'utilizzo di certificati per le connessioni in ingresso (Transact-SQL).For information about this stage of setting up database mirroring, see Allow a Database Mirroring Endpoint to Use Certificates for Inbound Connections (Transact-SQL).

  3. Creazione del database mirrorCreating the Mirror Database

    Per informazioni su come creare un database mirror, vedere Preparazione di un database mirror per il mirroring (SQL Server).For information on how to create a mirror database, see Prepare a Mirror Database for Mirroring (SQL Server).

  4. Configurazione dei partner del mirroringConfiguring the Mirroring Partners

Configurazione delle connessioni in uscita Configuring Outbound Connections

Per configurare Host_A per le connessioni in uscitaTo configure Host_A for outbound connections

  1. Nel database master creare la chiave master del database, se necessaria.On the master database, create the database master key, if needed.

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

    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 a mirroring endpoint for server instance using the certificate.

    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.Back up the HOST_A certificate, and copy it to other system, HOST_B.

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';  
    GO  
    
  5. Utilizzando un metodo di copia sicuro, copiare C:\HOST_A_cert.cer in HOST_B.Using any secure copy method, copy C:\HOST_A_cert.cer to HOST_B.

    Per configurare Host_B per le connessioni in uscitaTo configure Host_B for outbound connections

  6. Nel database master creare la chiave master del database, se necessaria.On the master database, create the database master key, if needed.

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

    CREATE CERTIFICATE HOST_B_cert   
       WITH SUBJECT = 'HOST_B certificate for database mirroring';  
    GO  
    
  8. Creare un endpoint del mirroring per l'istanza del server in HOST_B.Create a mirroring endpoint for the server instance on 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  
    
  9. Eseguire il backup del certificato di HOST_B.Back up HOST_B certificate.

    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';  
    GO   
    
  10. Utilizzando un metodo di copia sicuro, copiare C:\HOST_B_cert.cer in HOST_A.Using any secure copy method, copy C:\HOST_B_cert.cer to HOST_A.

    Per altre informazioni, vedere Impostazione dell'endpoint del mirroring del database per l'utilizzo di certificati per le connessioni in uscita (Transact-SQL).For more information, see Allow a Database Mirroring Endpoint to Use Certificates for Outbound Connections (Transact-SQL).

    [Inizio dell'esempio ][Top of Example]

Configurazione delle connessioni in ingresso Configuring Inbound Connections

Per configurare Host_A per le connessioni in ingressoTo configure Host_A for inbound connections

  1. In HOST_A creare un account di accesso per HOST_B.Create a login on HOST_A for 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 a user for that login.

    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  
    GO  
    
  3. --Associare il certificato all'utente.--Associate the certificate with the user.

    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 permission on the login for the remote mirroring endpoint.

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

    Per configurare Host_B per le connessioni in ingressoTo configure Host_B for inbound connections

  5. In HOST_B creare un account di accesso per HOST_A.Create a login on HOST_B for HOST_A.

    USE master;  
    CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';  
    GO  
    
  6. Creare un utente per tale account di accesso.Create a user for that login.

    CREATE USER HOST_A_user FOR LOGIN HOST_A_login;  
    GO  
    
  7. Associare il certificato all'utente.Associate the certificate with the user.

    CREATE CERTIFICATE HOST_A_cert  
       AUTHORIZATION HOST_A_user  
       FROM FILE = 'C:\HOST_A_cert.cer'  
    GO  
    
  8. Concedere l'autorizzazione CONNECT per l'account di accesso per l'endpoint del mirroring remoto.Grant CONNECT permission on the login for the remote mirroring endpoint.

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

Importante

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.If you intend to run in high-safety mode with automatic failover, you must repeat the same setup steps to configure the witness for outbound and inbound connections. 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.Setting up the inbound connections when a witness is involved requires that you set up logins and users for the witness on both of the partners and for both partners on the witness.

Per altre informazioni, vedere Impostazione dell'endpoint del mirroring del database per l'utilizzo di certificati per le connessioni in ingresso (Transact-SQL).For more information, see Allow a Database Mirroring Endpoint to Use Certificates for Inbound Connections (Transact-SQL).

[Inizio dell'esempio ][Top of Example]

Creazione del database mirrorCreating the Mirror Database

Per informazioni su come creare un database mirror, vedere Preparazione di un database mirror per il mirroring (SQL Server).For information on how to create a mirror database, see Prepare a Mirror Database for Mirroring (SQL Server).

Configurazione dei partner del mirroring Configuring the Mirroring Partners

  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).On the mirror server instance on HOST_B, set the server instance on HOST_A as the partner (making it the initial principal server instance). Specificare un indirizzo di rete valido per TCP://HOST_A.Mydomain.Corp.Adventure-Works``.com:7024.Substitute a valid network address for TCP://HOST_A.Mydomain.Corp.Adventure-Works``.com:7024. Per altre informazioni, vedere Specificare un indirizzo di rete del server (Mirroring del database).For more information, see Specify a Server Network Address (Database Mirroring).

    --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).On the principal server instance on HOST_A, set the server instance on HOST_B as the partner (making it the initial mirror server instance). Specificare un indirizzo di rete valido per TCP://HOST_B.Mydomain.Corp.Adventure-Works.com:7024.Substitute a valid network address for 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.This example assumes that the session will be running in high-performance mode. 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.To configure this session for high-performance mode, on the principal server instance (on HOST_A), set transaction safety to OFF.

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

    Nota

    Se si prevede di usare 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' .If you intend to run in high-safety mode with automatic failover, leave transaction safety set to FULL (the default setting) and add the witness as soon as possible after executing the second SET PARTNER 'partner_server' statement. Si osservi che è necessario configurare prima il server di controllo del mirroring per le connessioni in uscita e in ingresso.Note that the witness must first be configured for outbound and inbound connections.

    [Inizio dell'esempio ][Top of Example]

Vedere ancheSee Also

Sicurezza trasporto per il mirroring del database e i gruppi di disponibilità AlwaysOn (SQL Server) Transport Security for Database Mirroring and Always On Availability Groups (SQL Server)
Specificare un indirizzo di rete del server (Mirroring del database) Specify a Server Network Address (Database Mirroring)
Endpoint del mirroring del database (SQL Server) The Database Mirroring Endpoint (SQL Server)
Usare certificati per un endpoint del mirroring del database (Transact-SQL) Use Certificates for a Database Mirroring Endpoint (Transact-SQL)
ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
Centro di sicurezza per il motore di database di SQL Server e il database SQL di AzureSecurity Center for SQL Server Database Engine and Azure SQL Database