Uso del reflejo de la base de datos para transacciones entre bases de datos o transacciones distribuidas no se admite en SQL Server

INTRODUCCIÓN

No se admite la creación de reflejo de base de datos para transacciones entre bases de datos o transacciones distribuidas en Microsoft SQL Server 2005 Service Pack 1 (SP1) y versiones posteriores.

Más información

Limitaciones de compatibilidad de creación de reflejos de base de datos

Service Pack 1 (SP1) de Microsoft SQL Server 2005 introdujo la característica de reflejo de la base de datos. Sin embargo, no se admite la creación de reflejo de base de datos para cualquier transacciones entre bases de datos o para las transacciones distribuidas. Atomicidad de la transacción y la integridad de la transacción no se puede garantizar en las situaciones siguientes:
  • Transacciones entre bases de datos

    Después de una conmutación por error, la base de datos reflejada es en una instancia de servidor diferente. Normalmente, la base de datos reflejada es en una instancia de servidor independiente de la base de datos no espejados. Incluso si se duplican ambas bases de datos entre los dos asociados de la mismos, no hay ninguna garantía de que ambas bases de datos se conmutarán por error al mismo tiempo.
  • Transacciones del Coordinador de transacciones distribuidas de Microsoft (MS DTC)

    Después de una conmutación por error, el nuevo servidor principal no se puede conectar a MS DTC del anterior servidor principal que utiliza el mismo identificador de recurso. Por lo tanto, el nuevo servidor principal no puede obtener el estado de la transacción.

Escenario de ejemplo

La situación de ejemplo siguiente muestra cómo podría producirse una incoherencia lógica entre bases de datos cuando se utiliza la creación de reflejo de base de datos con transacciones entre bases de datos. En este ejemplo, una aplicación utiliza una transacción entre bases de datos para insertar dos filas de datos. Se produce el comportamiento siguiente:
  • Se inserta una fila en una tabla en una base de datos reflejada (A la base de datos).
  • La otra fila se inserta en una tabla en otra base de datos (B).
A la base de datos se refleja en el modo de seguridad alta con conmutación por error automática. Mientras se confirma la transacción, A la base de datos deja de estar disponible y la sesión de creación de reflejos se conmuta automáticamente al reflejo de la base de datos A.

Después de la conmutación por error, la transacción entre bases de datos podría ser confirma correctamente en la base de datos B pero no en la base de datos fallidas. Este comportamiento puede producirse si el servidor principal original de la base de datos A no envía el registro de transacciones para las transacciones entre bases de datos al servidor reflejado antes de la falla. Después de la conmutación por error, la transacción no existe en el nuevo servidor principal. Por lo tanto, la base de datos A y B son incompatibles. Los datos que se insertan en la base de datos B permanecen intactos. Los datos que se insertan en la base de datos A se pierde.

Un escenario similar puede producirse cuando se utiliza la creación de reflejo de base de datos con transacciones de MS DTC. Por ejemplo, el nuevo servidor principal se pone en contacto el MS DTC después de una conmutación por error. Sin embargo, MS DTC no tiene conocimiento del nuevo servidor principal. Por lo tanto, MS DTC deja todas las transacciones que están en la fase "preparación para cometer", aunque las transacciones se consideran cometidas en otras bases de datos.

Para obtener más información acerca de los productos o herramientas que comprueban automáticamente si esta condición en la instancia de SQL Server y en las versiones del producto de SQL Server, vea la tabla siguiente:

Software de reglaTítulo de la reglaDescripción de la reglaVersiones del producto con el que se evalúa la regla
Asesor de System CenterLa creación de reflejo de base de datos de SQL Server no es compatible con transacciones distribuidas y bases de datos cruzadasSystem Center Advisor comprueba si cualquier base de datos en la instancia de SQL Server está habilitada para la creación de reflejo de base de datos. Asesor genera esta alerta en función de esta condición. Revisar las aplicaciones que conectarse a esta base de datos y asegúrese de que las solicitudes SQL de esta aplicación no participa en las transacciones distribuidas y bases de datos cruzadas.SQL Server 2008
SQL Server 2008 R2
SQL Server 2012


Para obtener más información acerca de las transacciones entre bases de datos y la creación de reflejo de base de datos de SQL Server 2005, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):

Propiedades

Id. de artículo: 926150 - Última revisión: 14 ene. 2017 - Revisión: 1

Comentarios