Cómo configurar la detección de conflictos en la replicación transaccional punto a punto (programación de la replicación con Transact-SQL)

La replicación punto a punto incluye la opción de habilitar la detección de conflictos en una topología. Para obtener más información, vea Detección de conflictos en la replicación punto a punto.

Para utilizar la detección de conflictos, todos los nodos deben estar ejecutando SQL Server 2008 o una versión posterior, y debe estar habilitada la detección para todos los nodos. Puede habilitar la detección de conflictos mientras configura una topología o después de configurarla. No es necesario poner la topología en modo inactivo para habilitar la detección de conflictos para una topología existente. Sin embargo, si se producen conflictos en los cambios antes de que todos los nodos se hayan habilitado para la detección de conflictos, la replicación no puede garantizar la detección de dichos conflictos. Para obtener más información sobre cómo configurar una topología, vea Cómo configurar la replicación transaccional punto a punto (programación de la replicación con Transact-SQL).

Nota

Al configurar la replicación punto a punto, se especifica un identificador para cada nodo. Este identificador, que debe ser único en todos los nodos de la topología, se almacena en la columna originator_id de la tabla del sistema MSpeer_originatorid_history. Si un nodo se quita de la topología, el identificador se sigue conservando en la tabla de historial. El identificador se conserva para evitar que se produzcan falsos conflictos si hay cambios procedentes del nodo quitado que todavía se están replicando en la topología. Si desea volver a usar el identificador para un nuevo nodo, primero deberá eliminarlo manualmente de la tabla MSpeer_originatorid_history en todos los nodos. Antes de eliminar un identificador de un nodo, ejecute sp_requestpeerresponse para comprobar que se hayan replicado todos los cambios que se originaron desde ese nodo.

Para habilitar la detección de conflictos durante la configuración de la topología

  • Al crear una publicación en cada nodo mediante sp_addpublication:

    • Especifique un valor de true para @p2p_conflictdetection.

    • Especifique un entero positivo distinto de cero para @p2p_originator_id. El identificador no debe haberse utilizado nunca en la topología. Para obtener una lista de los identificadores que ya se han utilizado, ejecute sp_help_peerconflictdetection.

    • Especifique un valor para @p2p_continue_onconflict. Se recomienda especificar un valor de false. Para obtener más información, vea "Controlar los conflictos" en Detección de conflictos en la replicación punto a punto.

Para habilitar la detección de conflictos después de configurar una topología

  1. En estos pasos se supone que hay una topología que consta de tres nodos: A, B y C. En el nodo A, ejecute sp_configure_peerconflictdetection:

    • Especifique el nombre de la publicación para @publication y un valor de enable para @action.

    • Especifique un entero positivo distinto de cero para @p2p_originator_id. El identificador no debe haberse utilizado nunca en la topología. Para obtener una lista de los identificadores que ya se han utilizado, ejecute sp_help_peerconflictdetection.

    • Especifique un valor para @continue_onconflict. Se recomienda especificar un valor de false. Para obtener más información, vea "Controlar los conflictos" en Detección de conflictos en la replicación punto a punto.

  2. Repita el paso 1 para los nodos B y C.

  3. Ejecute sp_help_peerconflictdetection desde uno de los nodos; especifique el nombre de la publicación para @publication. Compruebe el conjunto de resultados para asegurarse de que todos los nodos tienen la detección de conflictos habilitada y de que cada uno tiene su propio valor de identificador de originador.

Para deshabilitar la detección de conflictos

  • Ejecute sp_configure_peerconflictdetection para cada nodo de la topología. Especifique el nombre de la publicación para @publication y un valor de disable para @action.