Compartir a través de


Ejemplo: Configuración del reflejo de base de datos mediante certificados (Transact-SQL)

En este ejemplo se muestran todas las fases necesarias para crear una sesión de creación de reflejo de la base de datos mediante la autenticación basada en certificados. En los ejemplos de este tema se usa Transact-SQL. A menos que pueda garantizar que su red es segura, recomendamos que utilice cifrado para las conexiones de reflejo de base de datos.

Cuando copie un certificado en otro sistema, utilice un método de copia seguro. Tenga mucho cuidado de mantener todos sus certificados protegidos.

Ejemplo

En el ejemplo siguiente se muestra lo que se debe hacer en un asociado que reside en HOST_A. En este ejemplo, los dos asociados son las instancias de servidor predeterminadas en tres sistemas informáticos. Las dos instancias de servidor se ejecutan en dominios de Windows que no son de confianza, por lo que se requiere autenticación basada en certificados.

El rol principal inicial lo toma HOST_A y el rol reflejado lo toma HOST_B.

La configuración del reflejo de la base de datos mediante certificados implica cuatro fases generales, de las cuales se muestran tres: 1, 2 y 4 en este ejemplo. Estas fases son las siguientes:

  1. Configuración de conexiones salientes

    En este ejemplo se muestran los pasos para:

    1. Configuración de Host_A para conexiones salientes.

    2. Configuración de Host_B para conexiones salientes.

    Para obtener información sobre esta fase de configuración de la duplicación de la base de datos, vea Permitir que un punto de conexión de duplicación de la base de datos use certificados para conexiones salientes (Transact-SQL).

  2. Configuración de conexiones entrantes

    En este ejemplo se muestran los pasos para:

    1. Configuración de Host_A para conexiones entrantes.

    2. Configuración de Host_B para conexiones entrantes.

    Para obtener información sobre esta fase de configuración del envío en espejo de la base de datos, consulte Permitir que un punto de conexión de espejo de la base de datos use certificados para conexiones entrantes (Transact-SQL).

  3. Creación de la base de datos espejo

    Para obtener información sobre cómo crear una base de datos reflejada, consulte Preparar una base de datos para el reflejo (SQL Server).

  4. Configuración de los socios de reflejo

Configurar conexiones salientes

Para configurar Host_A para las conexiones salientes

  1. En la base de datos maestra, cree la clave maestra de base de datos, si es necesario.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<1_Strong_Password!>';  
    GO  
    
  2. Cree un certificado para esta instancia de servidor.

    USE master;  
    CREATE CERTIFICATE HOST_A_cert   
       WITH SUBJECT = 'HOST_A certificate';  
    GO  
    
  3. Cree un punto terminal de reflejo para la instancia de servidor con el certificado.

    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. Realice una copia de seguridad del certificado HOST_A y cópielo en otro sistema, HOST_B.

    BACKUP CERTIFICATE HOST_A_cert TO FILE = 'C:\HOST_A_cert.cer';  
    GO  
    
  5. Con cualquier método de copia segura, copie C:\HOST_A_cert.cer en HOST_B.

Para configurar Host_B para las conexiones salientes

  1. En la base de datos maestra, cree la clave maestra de base de datos, si es necesario.

    USE master;  
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong_Password_#2>';  
    GO  
    
  2. Cree un certificado en la instancia del servidor HOST_B.

    CREATE CERTIFICATE HOST_B_cert   
       WITH SUBJECT = 'HOST_B certificate for database mirroring';  
    GO  
    
  3. Cree un extremo de reflejo para la instancia del servidor en 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. Realice una copia de seguridad del certificado HOST_B.

    BACKUP CERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';  
    GO   
    
  5. Con cualquier método de copia segura, copie C:\HOST_B_cert.cer en HOST_A.

Para obtener más información, consulte Permitir que un punto de conexión de reflejo de base de datos utilice certificados para las conexiones salientes (Transact-SQL).

Configurar conexiones entrantes

Para configurar Host_A para las conexiones entrantes

  1. Cree un inicio de sesión en HOST_A para HOST_B.

    USE master;  
    CREATE LOGIN HOST_B_login WITH PASSWORD = '1Sample_Strong_Password!@#';  
    GO  
    
  2. --Cree un usuario para ese inicio de sesión.

    CREATE USER HOST_B_user FOR LOGIN HOST_B_login;  
    GO  
    
  3. --Asocie el certificado al usuario.

    CREATE CERTIFICATE HOST_B_cert  
       AUTHORIZATION HOST_B_user  
       FROM FILE = 'C:\HOST_B_cert.cer'  
    GO  
    
  4. Conceda el permiso CONNECT en el inicio de sesión para el punto de conexión de creación de reflejo remoto.

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

Para configurar Host_B para las conexiones entrantes

  1. Cree un inicio de sesión en HOST_B para HOST_A.

    USE master;  
    CREATE LOGIN HOST_A_login WITH PASSWORD = '=Sample#2_Strong_Password2';  
    GO  
    
  2. Cree un usuario para dicho inicio de sesión.

    CREATE USER HOST_A_user FOR LOGIN HOST_A_login;  
    GO  
    
  3. Asocie el certificado al usuario.

    CREATE CERTIFICATE HOST_A_cert  
       AUTHORIZATION HOST_A_user  
       FROM FILE = 'C:\HOST_A_cert.cer'  
    GO  
    
  4. Conceda el permiso CONNECT en el inicio de sesión para el punto de conexión de creación de reflejo remoto.

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

Importante

Si piensa ejecutar en modo de alta seguridad con conmutación automática en caso de error, deberá repetir los mismos pasos de configuración del testigo para las conexiones salientes y entrantes. La configuración de las conexiones entrantes cuando un testigo está implicado requiere que configure inicio de sesión y usuarios para el testigo en ambos socios y para los dos socios en el testigo.

Para obtener más información, vea Permitir que un punto de conexión de creación de reflejo de la base de datos utilice certificados para las conexiones entrantes (Transact-SQL).

Creación de la base de datos espejo

Para obtener información sobre cómo crear una base de datos duplicada, consulte Preparar una base de datos para duplicación (SQL Server).

Configuración de los pares de reflejo

  1. En la instancia del servidor espejo en HOST_B, configure la instancia del servidor en HOST_A como socio (convirtiéndola en la instancia inicial del servidor principal). Sustituya una dirección de red válida para TCP://HOST_A.Mydomain.Corp.Adventure-Works``.com:7024. Para obtener más información, vea Especificar una dirección de red de servidor (Creación de reflejo de la base de datos).

    --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. En la instancia del servidor principal de HOST_A, establezca la instancia del servidor en HOST_B como asociado (lo que lo convierte en la instancia inicial del servidor reflejado). Sustituya una dirección de red válida para 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. En este ejemplo se supone que la sesión se ejecutará en modo de alto rendimiento. Para configurar esta sesión para el modo de alto rendimiento, en la instancia del servidor principal (en HOST_A), establezca la seguridad de las transacciones en OFF.

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

    Nota:

    Si tiene la intención de ejecutar en modo de alta seguridad con conmutación automática, deje la seguridad de las transacciones configurada en FULL (la configuración predeterminada) y agregue el observador lo antes posible después de ejecutar la segunda instrucción SET PARTNER 'partner_server'. Tenga en cuenta que el testigo debe configurarse primero para las conexiones salientes y entrantes.

Tareas relacionadas

Véase también

Seguridad de transferencia para la duplicación de bases de datos y los grupos de disponibilidad AlwaysOn (SQL Server)
Especificar una dirección de red de servidor (creación de reflejo de la base de datos)
El extremo de creación de reflejo de la base de datos (SQL Server)
Usar certificados para un punto de conexión de creación de reflejo de la base de datos (Transact-SQL)
ALTERAR BASE DE DATOS (Transact-SQL)
Centro de seguridad para el motor de base de datos SQL Server y la base de datos SQL Azure