Cómo establecer una sesión de creación de reflejo de la base de datos mediante la autenticación de Windows (Transact-SQL)

Una vez preparada la base de datos reflejada (vea Cómo preparar una base de datos reflejada para la creación de reflejo (Transact-SQL)), puede establecer una sesión de creación de reflejo de la base de datos. Las instancias de servidor principal, reflejado y testigo deben ser instancias de servidor independientes y se deben encontrar en sistemas host distintos.

Nota importanteImportante

Es recomendable que configure la creación de reflejo de la base de datos durante las horas de menor actividad, ya que puede afectar al rendimiento.

[!NOTA]

Una determinada instancia de servidor puede participar en varias sesiones simultáneas de creación de reflejo de la base de datos con el mismo asociado o con asociados distintos. Una instancia de servidor puede ser asociado en algunas sesiones y testigo en otras. La instancia del servidor reflejado debe ejecutar la misma edición de SQL Server, ya sea Standard o Enterprise, que la instancia del servidor principal. Asimismo, se recomienda que se ejecuten en sistemas que puedan controlar cargas de trabajo idénticas.

Para establecer una sesión de creación de reflejo de la base de datos

  1. Cree la base de datos reflejada. Para obtener más información, vea Cómo preparar una base de datos reflejada para la creación de reflejo (Transact-SQL).

  2. Configure la seguridad en cada instancia de servidor.

    Cada instancia de servidor de una sesión de creación de reflejo de la base de datos requiere un extremo de creación de reflejo de la base de datos. Si el extremo no existe, deberá crearlo.

    [!NOTA]

    El tipo de autenticación que utilice la instancia de servidor para la creación de reflejo de la base de datos es una propiedad del extremo de reflejo de la base de datos. Existen dos tipos de seguridad de transporte disponibles para la creación de reflejo de la base de datos: autenticación de Windows o autenticación basada en certificados. Para obtener más información, vea Seguridad en el transporte para la creación del reflejo de una base de datos.

    Asegúrese de que exista un extremo para el reflejo de bases de datos en cada servidor asociado. La instancia de servidor sólo puede tener un extremo de reflejo de la base de datos, independientemente del número de sesiones de creación de reflejo que se admitirán. Si tiene pensado utilizar esta instancia de servidor exclusivamente para los asociados en las sesiones de creación de reflejo de la base de datos, puede asignar la función de asociado al extremo (ROLE**=**PARTNER). Si también tiene pensado usar este servidor para el testigo en otras sesiones de creación de reflejo de la base de datos, asigne la función del extremo como ALL.

    Para ejecutar una instrucción SET PARTNER, el valor de STATE de los extremos de ambos asociados debe ser STARTED.

    Para saber si una instancia de servidor tiene un extremo de reflejo de la base de datos y cuáles son su función y su estado, use en esa instancia la siguiente instrucción Transact-SQL:

    SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints
    
    Nota importanteImportante

    No reconfigure un extremo de creación de reflejo de la base de datos en uso. Si existe un extremo para la creación de reflejo de la base de datos y ya se está utilizando, se recomienda utilizar ese extremo para cada sesión en la instancia de servidor. Quitar un extremo en uso puede dar lugar a que el extremo se reinicie y conllevar la interrupción de las conexiones de las sesiones existentes, que pueden aparecer como un error en las otras instancias de servidor. Esto es especialmente importante en el modo de alta seguridad con conmutación automática por error, en el que reconfigurar el extremo en un asociado podría dar lugar a una conmutación automática por error. Asimismo, si se ha establecido un testigo para una sesión, la eliminación del extremo de creación de reflejo de la base de datos puede hacer que el servidor principal de esa sesión pierda quórum; si sucede esto, la base de datos se queda sin conexión y se desconecta a sus usuarios. Para obtener más información, vea Quórum: cómo un testigo afecta a la disponibilidad de la base de datos.

    Si alguno de los asociados no tiene un extremo, vea Cómo crear un extremo de reflejo para la autenticación de Windows (Transact-SQL).

  3. Si las instancias de servidor se ejecutan con distintas cuentas de usuario de dominio, cada una requiere un inicio de sesión en la base de datos master de las demás. Si el inicio de sesión no existe, deberá crearlo. Para obtener más información, vea Cómo permitir el acceso a una red de creación de reflejo de la base de datos mediante la autenticación de Windows (Transact-SQL).

  4. Para establecer el servidor principal como asociado en la base de datos reflejada, conéctese al servidor reflejado y emita la instrucción siguiente:

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    donde <database_name> es el nombre de la base de datos de la que se va a crear el reflejo (este nombre es el mismo para ambos asociados) y <server_network_address> es la dirección de red del servidor principal.

    La sintaxis de una dirección de red de servidor se describe a continuación:

    TCP**://<system-address>:**<port>

    donde <system-address> es una cadena que identifica de forma inequívoca el sistema del equipo de destino y <port> es el número de puerto que utiliza el extremo de la creación de reflejo de la instancia de servidor asociado. Para obtener más información, vea Especificar una dirección de red de servidor (creación de reflejo de la base de datos).

    Por ejemplo, en la instancia de servidor reflejado, el siguiente parámetro ALTER DATABASE establece el asociado como la instancia de servidor principal original. El nombre de la base de datos es AdventureWorks, la dirección del sistema es DBSERVER1 (el nombre del sistema del asociado) y el puerto usado por el extremo de la creación de reflejo de la base de datos del asociado es 7022:

    ALTER DATABASE AdventureWorks 
       SET PARTNER = 'TCP://DBSERVER1:7022'
    

    Esta instrucción prepara el servidor reflejado para que cree una sesión cuando el servidor principal se ponga en contacto con él.

  5. Para establecer el servidor reflejado como asociado en la base de datos principal, conéctese al servidor principal y emita la instrucción siguiente:

    ALTER DATABASE <database_name> SET PARTNER =<server_network_address>

    Para obtener más información, vea el paso 4.

    Por ejemplo, en la instancia de servidor principal, la siguiente instrucción ALTER DATABASE establece el asociado como la instancia de servidor reflejado original. El nombre de la base de datos es AdventureWorks, la dirección del sistema es DBSERVER2, es decir, el nombre del sistema del asociado, y el puerto utilizado por el extremo de reflejo de la base de datos del asociado es 7025:

    ALTER DATABASE AdventureWorks SET PARTNER = 'TCP://DBSERVER2:7022'
    

    Si escribe esta instrucción en el servidor principal, comenzará la sesión de creación de reflejo de la base de datos.

  6. De forma predeterminada, una sesión se configura con la seguridad de las transacciones completa (SAFETY se establece en FULL), lo que inicia la sesión en modo sincrónico de alta seguridad sin conmutación automática por error. Puede volver a configurar la sesión para ejecutarla en modo de alta seguridad sin conmutación automática por error o en modo asincrónico de alto rendimiento, como se indica a continuación:

Ejemplo

[!NOTA]

En el siguiente ejemplo se establece una sesión de creación de reflejo de la base de datos entre asociados de una base de datos reflejada existente. Para obtener más información sobre la creación de una base de datos reflejada, vea Cómo preparar una base de datos reflejada para la creación de reflejo (Transact-SQL).

En el ejemplo se muestran los pasos básicos para crear una sesión de creación de reflejo de la base de datos sin un testigo. Los dos asociados son las instancias de servidor predeterminadas en dos equipos (PARTNERHOST1 y PARTNERHOST5). Las dos instancias de asociado se ejecutan con la misma cuenta de usuario de dominio de Windows (MYDOMAIN\dbousername).

[!NOTA]

Para obtener un ejemplo completo que muestre la configuración de la seguridad, la preparación de la base de datos reflejada, el establecimiento de asociados y la agregación de un testigo, vea Configurar la creación de reflejo de la base de datos.

  1. En la instancia de servidor principal (instancia predeterminada en PARTNERHOST1), cree un extremo que admita todas las funciones y que utilice el puerto 7022:

    --create an endpoint for this instance
    CREATE ENDPOINT Endpoint_Mirroring
        STATE=STARTED 
        AS TCP (LISTENER_PORT=7022) 
        FOR DATABASE_MIRRORING (ROLE=ALL)
    GO
    --Partners under same domain user; login already exists in master.
    
  2. En la instancia de servidor reflejado (instancia predeterminada en PARTNERHOST5), cree un extremo que admita todas las funciones y que utilice el puerto 7022:

    --create an endpoint for this instance
    CREATE ENDPOINT Endpoint_Mirroring
        STATE=STARTED 
        AS TCP (LISTENER_PORT=7022) 
        FOR DATABASE_MIRRORING (ROLE=ALL)
    GO
    --Partners under same domain user; login already exists in master.
    
  3. En la instancia de servidor principal (en PARTNERHOST1), cree una copia de seguridad de la base de datos:

    BACKUP DATABASE AdventureWorks 
        TO DISK = 'C:\AdvWorks_dbmirror.bak' 
        WITH FORMAT
    GO
    
  4. En la instancia de servidor reflejado (en PARTNERHOST5), restaure la base de datos:

    RESTORE DATABASE AdventureWorks 
        FROM DISK = 'Z:\AdvWorks_dbmirror.bak' 
        WITH NORECOVERY
    GO
    
  5. Tras crear la copia de seguridad completa de base de datos, debe crear una copia de seguridad de registros en la base de datos principal. Por ejemplo, las siguientes instrucciones Transact-SQL hacen una copia de seguridad del registro en el mismo archivo que ha utilizado la copia de seguridad de base de datos anterior:

    BACKUP LOG AdventureWorks 
        TO DISK = 'C:\AdventureWorks.bak' 
    GO
    
  6. Para poder iniciar la creación de reflejo, se debe aplicar la copia de seguridad de registros obligatoria (y las copias de seguridad de registros subsiguientes).

    Por ejemplo, la siguiente instrucción Transact-SQL restaura el primer registro desde C:\AdventureWorks.bak:

    RESTORE LOG AdventureWorks 
        FROM DISK = 'C:\ AdventureWorks.bak' 
        WITH FILE=1, NORECOVERY
    GO
    
  7. En la instancia de servidor reflejado, establezca la instancia de servidor en PARTNERHOST1 como asociado (para convertirla en el servidor principal inicial):

    ALTER DATABASE AdventureWorks 
        SET PARTNER = 
        'TCP://PARTNERHOST1:7022'
    GO
    
    Nota importanteImportante

    De forma predeterminada, una sesión de creación de reflejo de la base de datos se ejecuta en modo sincrónico. Esto exige tener la seguridad de las transacciones completa (SAFETY establecido en FULL). Para que una sesión se ejecute en modo asincrónico de alto rendimiento, establezca SAFETY en OFF. Para obtener más información, vea Sesiones de creación de reflejo de la base de datos y Cómo cambiar la seguridad de las transacciones en una sesión de creación de reflejo de la base de datos (Transact-SQL).

  8. En la instancia de servidor principal, establezca la instancia de servidor en PARTNERHOST5 como asociado (para convertirla en el servidor reflejado inicial):

    ALTER DATABASE AdventureWorks 
        SET PARTNER = 'TCP://PARTNERHOST5:7022'
    GO
    
  9. Opcionalmente, si va a usar el modo de alta seguridad con conmutación automática por error, configure la instancia de servidor testigo. Para obtener más información, vea Cómo agregar un testigo de creación de reflejo de la base de datos mediante la autenticación de Windows (Transact-SQL).

[!NOTA]

Para obtener un ejemplo completo que muestre la configuración de la seguridad, la preparación de la base de datos reflejada, el establecimiento de asociados y la agregación de un testigo, vea Configurar la creación de reflejo de la base de datos.

Vea también

Tasks

Referencia

Conceptos

Otros recursos