Conmutación automática por error

La conmutación automática por error sólo se admite en sesiones de creación de reflejo de la base de datos que se ejecutan con un token en modo de alta seguridad (modo de alta seguridad con conmutación automática por error). En modo de alta seguridad con conmutación automática por error, una vez que se ha sincronizado la base de datos, si la base de datos de la entidad de seguridad deja de estar disponible, se produce la conmutación automática por error. La conmutación automática por error hace que el servidor reflejado asuma la función de servidor de la entidad de seguridad y ponga en línea su copia de la base de datos como base de datos de la entidad de seguridad. El hecho de que se requiera la sincronización de la base de datos evita que se pierdan datos durante la conmutación por error, dado que cada transacción confirmada en la base de datos de la entidad de seguridad también se confirma en la base de datos reflejada.

Para que la conmutación automática por error mejore la confiabilidad, las bases de datos reflejada y de la entidad de seguridad deben residir en equipos diferentes.

Condiciones requeridas para una conmutación automática por error

La conmutación automática por error requiere las condiciones siguientes:

  • La sesión de creación de reflejo de la base de datos debe ejecutarse en modo de alta seguridad y debe poseer un token. Para obtener más información, vea Creación de reflejo sincrónico de la base de datos (modo de alta seguridad).

  • La base de datos reflejada ya debe estar sincronizada. Esto garantiza que toda la parte del registro que se haya enviado al servidor reflejado se haya escrito en el disco.

  • El servidor de la entidad de seguridad ha perdido la comunicación con el resto de la configuración del reflejo de la base de datos, mientras que el servidor reflejado y el token conservan el quórum. Sin embargo, si todas las instancias de servidor pierden la comunicación, y el token y el servidor reflejado la recuperan después, no se produce la conmutación automática por error.

  • El servidor reflejado ha detectado la pérdida del servidor de la entidad de seguridad.

    El modo en que el servidor reflejado detecta un error en el servidor de la entidad de seguridad depende de si éste es un error de software o de hardware. Para obtener más información, vea Posibles errores durante la creación de reflejo de la base de datos.

Cómo funciona la conmutación automática por error

Si se cumplen las condiciones anteriores, la conmutación automática por error inicia la siguiente secuencia de acciones:

  1. Si el servidor de la entidad de seguridad sigue en funcionamiento, cambiará el estado de la base de datos de la entidad de seguridad a DISCONNECTED y desconectará a todos los clientes de la base de datos de la entidad de seguridad.

  2. Los servidores token y reflejado registran que el servidor de la entidad de seguridad no está disponible.

  3. Si hay algún registro esperando en la cola de puesta al día, el servidor reflejado deja de poner al día la base de datos reflejada.

    [!NOTA]

    La cantidad de tiempo que requiere la aplicación del registro depende de la velocidad del sistema, la carga de trabajo reciente y la cantidad de registro en la cola de puesta al día.

  4. La base de datos reflejada anterior pasa a estar en línea como la nueva base de datos de la entidad de seguridad, y la recuperación limpia todas las transacciones no confirmadas revirtiéndolas lo más rápido posible. Los bloqueos aíslan esas transacciones.

  5. Cuando el servidor de la entidad de seguridad anterior se reincorpora a la sesión, reconoce que su asociado de conmutación por error ahora tiene la función principal. El servidor de la entidad de seguridad anterior asume la función de reflejo, con lo que su base de datos pasa a ser la base de datos reflejada. El nuevo servidor reflejado sincroniza la nueva base de datos reflejada con la base de datos de la entidad de seguridad lo más rápido posible. Tan pronto como el nuevo servidor reflejado haya resincronizado las bases de datos, la conmutación por error vuelve a ser posible, pero en la dirección inversa.

En la siguiente ilustración se muestra una sola instancia de conmutación automática por error.

Conmutación automática por error

Inicialmente, los tres servidores están conectados (es decir, la sesión tiene un quórum completo). Partner_A es el servidor de la entidad de seguridad y Partner_B es el servidor reflejado. Partner_A (o la base de datos de la entidad de seguridad en Partner_A) pasa a no estar disponible. El token y Partner_B reconocen que el servidor de la entidad de seguridad ya no está disponible y la sesión conserva el quórum. Partner_B se convierte en el servidor de la entidad de seguridad y hace que su copia de la base de datos esté disponible como la nueva base de datos de la entidad de seguridad. Finalmente, Partner_A se vuelve a conectar a la sesión y descubre que Partner_B posee ahora la función principal. Entonces, Partner_A asume la función de reflejo.

Tras la conmutación por error, los clientes deben volver a conectarse a la base de datos de la entidad de seguridad actual. Para obtener más información, vea Conectar clientes a una base de datos reflejada.

[!NOTA]

Las transacciones que se han preparado mediante el Coordinador de transacciones distribuidas de Microsoft, pero que aún no están confirmadas en el momento de la conmutación por error, se consideran anuladas tras la conmutación por error de la base de datos.

Deshabilitar la conmutación automática por error mediante SQL Server Management Studio

Para deshabilitar la conmutación automática por error, abra la página Creación de reflejos de Propiedades de la base de datos, y cambie el modo de funcionamiento seleccionando una de las opciones siguientes:

Para cambiar el modo de funcionamiento

Deshabilitar la conmutación automática por error mediante Transact-SQL

En cualquier punto de una sesión de creación de reflejo de la base de datos, el propietario de la base de datos puede deshabilitar la conmutación automática por error desactivando el token.

Para desactivar el token