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

Cuando un publicador y un suscriptor se conectan y se produce la sincronización, el Agente de mezcla detecta si existen conflictos. Si se detectan conflictos, el Agente de mezcla utiliza un solucionador de conflictos (que se especifica cuando se agrega un artículo a una publicación) para determinar qué datos se aceptarán y se propagarán a otros sitios. Para obtener una lista completa de tipos de conflicto, vea la sección sobre los tipos de conflicto en el tema Cómo la replicación de mezcla detecta y resuelve conflictos.

Nota

Aunque un suscriptor se sincronice con el publicador, suelen producirse conflictos entre las actualizaciones que se realizan en suscriptores diferentes, en vez de entre las actualizaciones que se realizan 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:

  • Si especifica seguimiento por columna, seguimiento por filas o seguimiento por registro lógico.

  • Si especifica el mecanismo de resolución basado en la prioridad predeterminada o especifica una resolución de artículos. Una resolución de artículos puede ser:

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

    • Una resolución personalizada basada en COM

    • Una resolución basada en COM proporcionada por Microsoft

    Si se utiliza el mecanismo de resolución predeterminado, el tipo de suscripción utilizada (cliente o servidor) determina el comportamiento.

Detección de conflictos

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

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

  • Si selecciona seguimiento de conflictos por filas, se considera un conflicto si los cambios se realizan en cualquier columna de la misma fila en más de un nodo de replicación (las columnas afectadas en las filas correspondientes no tienen que ser las mismas).

  • Si selecciona seguimiento de conflictos por registro lógico, se considera un conflicto si los cambios se realizan 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 tienen que ser las mismas).

Para obtener más información sobre el nivel de seguimiento, vea la sección sobre el nivel de seguimiento de los temas Cómo la replicación de mezcla detecta y resuelve conflictos y Detectar y resolver conflictos en registros lógicos.

Para especificar el seguimiento de conflictos y el nivel de resolución de un artículo

Resolución de conflictos

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

Tipos de resolución

En la replicación de mezcla, la resolución de conflictos tiene lugar en el nivel de artículo. En el caso de publicaciones compuestas de varios artículos, es posible tener varios solucionador de conflictos que proporcionen servicio a diferentes artículos o un mismo solucionador de conflictos que proporcione servicio a un artículo, a varios artículos o a todos los artículos que componen la publicación.

Si va a utilizar el solucionador de conflictos predeterminado basado en prioridad, no tendrá que establecer la propiedad de resolución de los artículos. Si desea utilizar una resolución de artículos en lugar de la resolución predeterminada, deberá establecer la propiedad de la resolución del artículo que la utilizará seleccionando una resolución personalizada disponible en el publicador. Cualquier información específica que se deba pasar a la resolución puede especificarse también en la propiedad de información de la resolución.

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

  • El solucionador de conflictos predeterminado basado en prioridad

    El mecanismo de resolución predeterminada se comporta de forma diferente, dependiendo de si se trata de una suscripción de cliente o una suscripción de servidor. Asigne valores de prioridad a suscriptores individuales que utilizan suscripciones de servidor; los cambios realizados en el nodo con la máxima prioridad ganan en cualquier conflicto. En suscripciones de cliente, el primer cambio escrito en el publicador gana el conflicto. Para obtener más información, vea la sección sobre los tipos de suscripción en el tema Cómo la replicación de mezcla detecta y resuelve conflictos.

    Después de crear una suscripción, no se puede cambiar de un tipo a otro.

  • Un controlador de lógica de negocios

    El marco de trabajo de controlador de lógica de negocios permite escribir un ensamblado de código administrado al que se llama durante el proceso de sincronización de mezcla. El ensamblado incluye la lógica de negocios que puede responder a conflictos y a otras condiciones durante la sincronización. Para obtener más información, vea Ejecutar la lógica de negocios durante la sincronización de mezcla.

  • Una resolución personalizada basada en COM

    La replicación de mezcla proporciona una API para escribir resoluciones como objetos COM en lenguajes como Microsoft Visual C++ o Microsoft Visual Basic. Para obtener más información, vea Resoluciones personalizadas para COM.

  • Una resolución basada en COM proporcionada por Microsoft

    Microsoft SQL Server incluye varias resoluciones basadas en COM. Para obtener más información, vea Resoluciones basadas en Microsoft COM.

Para obtener información acerca de cómo seleccionar el tipo de resolución adecuado, vea Elegir una resolución.

Nota

Algunas resoluciones de artículos están escritas para controlar conflictos sólo en determinadas operaciones. Por ejemplo, una resolución puede controlar actualizaciones, pero no inserciones o eliminaciones. El solucionador de conflictos predeterminado basado en prioridad controla los conflictos que no controla la resolución de artículos.

Para especificar un tipo de suscripción de mezcla y la prioridad de resolución de conflictos

Resolución interactiva

La replicación proporciona una interfaz de usuario de Resolución interactiva que se puede utilizar junto con el solucionador de conflictos predeterminado basado en prioridad o una resolución de artículos. Cuando se ejecuta una sincronización a petición a través del Administrador de sincronización de Microsoft Windows, la Resolución interactiva muestra los datos en conflicto en tiempo de ejecución y permite elegir la forma de resolver los conflictos. Para obtener más información acerca de cómo habilitar la resolución interactiva e iniciar el componente de resolución interactiva, vea Resolución interactiva de conflictos.

Ver conflictos

La forma más directa de ver conflictos es utilizar el Visor de conflictos de replicación, disponible en SQL Server Management Studio (SQL Server también proporciona procedimientos almacenados que permiten consultar tablas de conflictos). El Visor de conflictos y la Resolución interactiva son herramientas parecidas, pero la Resolución interactiva permite resolver los conflictos cuando se realiza la sincronización, mientras que el Visor de conflictos está diseñado para ver los conflictos después de haberlos resuelto. Si los metadatos en conflicto aún están disponibles en las tablas del sistema (los metadatos en conflicto se conservan, de forma predeterminada, durante 14 días), puede reemplazar el resultado de la resolución de conflictos en el Visor de conflictos, pero si se requiere con frecuencia una intervención directa, debe considerar la posibilidad de utilizar la Resolución interactiva.

Nota

Los conflictos relativos a registros lógicos no se muestran en el Visor de conflictos. Para ver información acerca de esos conflictos, use los procedimientos almacenados de replicación. Para obtener más información, vea Cómo ver información de conflictos para publicaciones de mezcla (programación de la replicación con Transact-SQL).

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

  • La replicación crea una tabla de conflictos por cada tabla de una restricción de mezcla, con un nombre en formato MSmerge_conflict_<nombreDePublicación>_<nombreDeArtículo>.

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

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

  • En la tabla sysmergearticles se identifican las tablas del usuario que tienen tablas de conflictos y se proporciona información sobre ellas.

De forma predeterminada, la información de conflictos se almacena en las siguientes ubicaciones:

  • En el publicador y el suscriptor si el nivel de compatibilidad de la publicación es 90RTM o superior. Para obtener más información, vea la sección sobre el nivel de compatibilidad de publicaciones de mezcla en el tema Usar varias versiones de SQL Server en una topología de replicación.

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

  • En el publicador, si los suscriptores utilizan SQL Server Compact 3.5 SP2. No se pueden almacenar datos en conflicto en los suscriptores de SQL Server Compact 3.5 SP2.

Para ver conflictos

Vea también

Conceptos