Compartir a través de


Detección y resolución avanzadas de conflictos de replicación de mezcla

Cuando se conecta un publicador y un suscriptor y se produce la sincronización, el Agente de mezcla detecta si hay conflictos. Si se detectan conflictos, el Agente de mezcla usa un solucionador de conflictos (que se especifica cuando se agrega un artículo a una publicación) para determinar qué datos se aceptan y propagan a otros sitios.

Nota:

Aunque un suscriptor se sincroniza con el publicador, los conflictos suelen producirse entre las actualizaciones realizadas en diferentes suscriptores, en lugar de las actualizaciones realizadas en un suscriptor y en el publicador.

El comportamiento de la detección y resolución de conflictos depende de las siguientes opciones, que se describen en este tema:

  • Ya sea que especifique el seguimiento a nivel de columna, a nivel de fila, o a nivel lógico de registro.

  • Ya sea que especifique el mecanismo de resolución predeterminado basado en prioridades o un resolutor de artículos. Un resolutor de artículos puede ser:

    • Un controlador de lógica de negocios escrito en código administrado.

    • Un solucionador personalizado basado en COM.

    • Solucionador basado en COM proporcionado por Microsoft.

    Si se usa el mecanismo de resolución predeterminado, el comportamiento se determina aún más por el tipo de suscripción que se usa: cliente o servidor.

Detección de conflictos

Si un cambio de datos se califica como un conflicto o no depende del tipo de seguimiento de conflictos establecido para un artículo:

  • Si selecciona el seguimiento de conflictos a nivel de columna, se considera un conflicto si se realizan cambios en la misma columna de la misma fila en más de un nodo de replicación.

  • Si selecciona el seguimiento de nivel de fila, se considera un conflicto si se realizan cambios en las columnas de la misma fila en más de un nodo de replicación (las columnas afectadas en las filas correspondientes no deben ser las mismas).

  • Si selecciona el seguimiento de nivel de registro lógico, se considera un conflicto si se realizan cambios en cualquier fila del mismo registro lógico en más de un nodo de replicación (las columnas afectadas en las filas correspondientes no deben ser las mismas).

Para obtener más información, vea Detección y resolución de conflictos en registros lógicos.

Para especificar el nivel de seguimiento y resolución de conflictos de un artículo, vea Especificar el nivel de seguimiento y resolución de conflictos para artículos de mezcla.

Resolución de conflictos

Una vez detectado un conflicto, el Agente de mezcla inicia el solucionador de conflictos seleccionado y usa la resolución para determinar el ganador del conflicto. La fila ganadora se aplica en el Publicador y el Suscriptor, y los datos de la fila perdedora se escriben en una tabla de conflictos. Los conflictos se resuelven inmediatamente después de que se ejecute el solucionador, a menos que seleccione resolver conflictos de forma interactiva.

Tipos de solucionador

En la replicación de mezcla, la resolución de conflictos tiene lugar en el nivel de artículo. En el caso de las publicaciones compuestas de varios artículos, puede tener diferentes solucionadores de conflictos que atienden diferentes artículos, o el mismo solucionador de conflictos que atiende a un artículo, varios artículos o todos los artículos que componen una publicación.

Si tiene previsto usar la resolución de conflictos basada en prioridad predeterminada, no tiene que establecer la propiedad de resolución de un artículo. Si desea usar un solucionador de artículos en lugar del solucionador predeterminado, debe establecer la propiedad de resolución para el artículo que la usará seleccionando un solucionador disponible en el publicador. Cualquier información específica que se deba pasar al solucionador también se puede especificar en la propiedad de información del solucionador.

La replicación de mezcla ofrece cuatro tipos de solucionadores de conflictos:

  • Solucionador de conflictos predeterminado basado en prioridad

    El mecanismo de resolución predeterminado se comporta de forma diferente, en función de si una suscripción es una suscripción de cliente o una suscripción de servidor. Asigne valores de prioridad a suscriptores individuales que usen suscripciones de servidor; Los cambios realizados en el nodo con la prioridad más alta ganan los conflictos. En el caso de las suscripciones de cliente, el primer cambio escrito al Publicador gana el conflicto.

    Una vez creada una suscripción, no se puede cambiar de un tipo a otro.

  • Un controlador de lógica de negocios

    El framework de control de lógica empresarial te permite escribir un ensamblaje de código administrado que se llama durante el proceso de sincronización de combinación. El ensamblado incluye lógica de negocios que puede responder a conflictos y varias otras condiciones durante la sincronización. Para obtener más información, consulte Ejecutar lógica empresarial durante la sincronización de mezcla.

  • Un solucionador personalizado basado en COM

    La replicación de mezcla proporciona una API para escribir solucionadores como objetos COM en lenguajes como Microsoft Visual C++ o Microsoft Visual Basic. Para obtener más información, consulte COM-Based Solucionadores personalizados.

  • Un solucionador basado en COM proporcionado por Microsoft

    Microsoft SQL Server incluye una serie de solucionadores basados en COM. Para obtener más información, consulte Solucionadores de Microsoft COM-Based.

Para obtener información sobre cómo seleccionar el tipo de resolución adecuado, vea Elegir un solucionador.

Nota:

Algunos resolutores de conflictos de artículos están escritos para manejar los conflictos solo para ciertas operaciones. Por ejemplo, un solucionador podría controlar las actualizaciones, pero no las inserciones o eliminaciones. El solucionador de conflictos predeterminado basado en prioridad controla los conflictos no administrados por el solucionador de artículos.

Para especificar un tipo de suscripción de mezcla y una prioridad de resolución de conflictos, consulte

Solucionador interactivo

La replicación proporciona una interfaz de usuario de Resolución interactiva que se puede usar junto con el solucionador de conflictos basado en prioridad predeterminada o un solucionador de artículos. Al realizar la sincronización a petición a través del Administrador de sincronización de Microsoft Windows, el Solucionador interactivo muestra datos de conflictos en tiempo de ejecución y le permite elegir cómo resolver conflictos. Para obtener más información sobre cómo habilitar la resolución interactiva e iniciar la resolución interactiva, vea Interactive Conflict Resolution.

Visualización de conflictos

La manera más sencilla de ver conflictos es usar el Visor de conflictos de replicación, disponible en SQL Server Management Studio (SQL Server también proporciona procedimientos almacenados que permiten consultar las tablas de conflictos). El Visor de conflictos y el Solucionador interactivo son herramientas similares, pero el Solucionador interactivo permite resolver conflictos a medida que se produce la sincronización, mientras que el Visor de conflictos está diseñado para ver conflictos después de que se hayan resuelto. Si los metadatos de conflicto siguen estando disponibles en las tablas del sistema (los metadatos de conflicto se conservan durante 14 días de forma predeterminada), puede invalidar los resultados de resolución de conflictos en el Visor de conflictos, pero si se requiere intervención directa con regularidad, considere la posibilidad de usar el solucionador interactivo.

Nota:

Los conflictos que implican registros lógicos no se muestran en el Visor de conflictos. Para ver información sobre estos conflictos, use procedimientos almacenados de replicación. Para obtener más información, vea Ver información de conflictos para publicaciones de combinación (programación de replicación Transact-SQL).

El Visor de conflictos muestra información de tres tablas del sistema:

  • La replicación crea una tabla de conflictos para cada tabla de un artículo de combinación, con un nombre con el formato MSmerge_conflict_<PublicationName>_<ArticleName>.

    Las tablas de conflictos tienen la misma estructura que las tablas en las que se basan. Una fila en una de estas tablas consta de la versión perdedora de una fila en conflicto (la versión ganadora de la fila se encuentra en la tabla de usuarios actual).

  • La tabla MSmerge_conflicts_info proporciona información sobre cada conflicto, incluido el tipo de conflicto.

  • La tabla sysmergearticles identifica qué tablas de usuario tienen tablas de conflictos y proporciona información sobre las tablas de conflictos.

De forma predeterminada, la información de conflictos se almacena:

  • Para el publicador y el suscriptor si el nivel de compatibilidad de la publicación es 90RTM o superior.

  • En el publicador si el nivel de compatibilidad de la publicación es inferior a 80RTM.

  • En el publicador si los suscriptores ejecutan SQL Server Compact. Los datos de conflicto no se pueden almacenar en suscriptores de SQL Server Compact.

Para ver conflictos

Véase también

Sincronizar datos