Detección y resolución de conflictos de réplica de mezcla avanzada

Actualizado: 14 de abril de 2006

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 una resolución 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 réplica 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 réplica.
  • 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 réplica (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 réplica (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 réplica 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 la resolución de conflictos seleccionada y la 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 réplica 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 varias resoluciones de conflictos que proporcionen servicio a diferentes artículos o una misma resolución 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 la resolución de conflictos predeterminada basada 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 réplica de mezcla ofrece cuatro tipos de resoluciones de conflictos:

  • La resolución de conflictos predeterminada basada 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 réplica 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 réplica 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 2005 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. La resolución de conflictos predeterminada basada 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 réplica proporciona una interfaz de usuario de Resolución interactiva que se puede utilizar junto con la resolución de conflictos predeterminada basada 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 réplica, 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 réplica. Para obtener más información, vea How to: View Conflict Information for Merge Publications (Replication Transact-SQL Programming).

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

  • La réplica 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 réplica.
  • 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 2005 Compact Edition. No se pueden almacenar datos en conflicto en los suscriptores de SQL Server 2005 Compact Edition.

Para ver conflictos

Vea también

Conceptos

Características avanzadas de la réplica de mezcla
Sincronizar datos

Ayuda e información

Obtener ayuda sobre SQL Server 2005