Comparteix a través de


Resolución de conflictos para la replicación de mezcla

Se aplica a: SQL Server

Los conflictos en la replicación de mezcla se solucionan con el solucionador especificado para cada artículo. De manera predeterminada, los conflictos se resuelven sin necesidad de intervención del usuario. No obstante, es posible ver los conflictos y modificar el resultado de la resolución en el Visor de conflictos de replicación de Microsoft.

Los datos de conflictos están disponibles en el Visor de conflictos de replicación durante el tiempo especificado como período de retención de conflictos (con un valor predeterminado de 14 días). Para configurar el período de retención de conflictos:

De manera predeterminada, la información del conflicto se almacena:

  • En el publicador y en el suscriptor, si el nivel de compatibilidad de la publicación es igual o superior a 90RTM.
  • 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. No se pueden almacenar datos en conflicto en los suscriptores de SQL Server Compact.

La propiedad conflict_logging de la publicación controla el almacenamiento de la información del conflicto. Para más información, vea sp_addmergepublication (Transact-SQL) y sp_changemergepublication (Transact-SQL).

Los conflictos también se pueden solucionar de forma interactiva durante la sincronización, con el Solucionador interactivo de Microsoft. El Solucionador interactivo está disponible a través del Administrador de sincronización de Microsoft Windows. Para más información, vea Sincronizar una suscripción mediante el Administrador de sincronización de Windows (Windows Synchronization Manager).

Resolución de conflictos

  1. Conéctese al publicador (o al suscriptor) en Microsoft SQL Server Management Studio y, a continuación, expanda el nodo del servidor.

  2. Expanda la carpeta Replicación y, a continuación, expanda la carpeta Publicaciones locales .

  3. Haga clic con el botón secundario en la publicación para la que desea ver los conflictos y, a continuación, haga clic en Ver conflictos.

    Nota:

    Si especificó el valor 'subscriber' para la propiedad conflict_logging , la opción de menú Ver conflictos no está disponible. Para ver los conflictos, inicie ConflictViewer.exe desde el símbolo del sistema. De forma predeterminada, ConflictViewer.exe se encuentra en el siguiente directorio: Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE. Para obtener una lista de parámetros de inicio válidos, ejecute ConflictViewer.exe -?.

  4. En el cuadro de diálogo Seleccionar tabla de conflictos , seleccione una base de datos, una publicación y una tabla para ver los conflictos correspondientes.

  5. En el Visor de conflictos de replicación, puede:

    • Filtrar filas con los botones que aparecen a la derecha de la cuadrícula superior.

    • Seleccionar una fila en la cuadrícula superior para ver la información de esa fila en la cuadrícula inferior.

    • Seleccionar una o más filas en la cuadrícula superior y hacer clic en Quitar, lo que equivale a hacer clic en el botón Enviar ganador (sin realizar cambios en los datos).

    • Hacer clic en el botón de propiedades (...) para ver más información sobre la columna involucrada en el conflicto.

    • Editar datos en la columna Ganador del conflicto o Perdedor del conflicto antes de enviar los datos (los datos son de solo lectura si la columna está en color gris).

    • Hacer clic en Enviar ganador para aceptar la fila designada como ganador del conflicto.

    • Hacer clic en Enviar perdedor para anular la resolución y propagar el valor designado como perdedor del conflicto a todos los nodos de la topología.

    • Seleccionar Registrar los detalles de este conflicto para registrar los datos del conflicto en un archivo. Para especificar la ubicación del archivo, elija el menú Ver y haga clic en Opciones. Escriba un valor o haga clic en el botón Examinar (...) y navegue al archivo apropiado. Haga clic en Aceptar para salir del cuadro de diálogo Opciones .

  6. Cierre el Visor de conflictos de replicación.

Visualización de la información de conflictos

Cuando se resuelve un conflicto en la replicación de mezcla, los datos de la fila que falta se escriben en una tabla de conflictos. Estos datos de conflicto se pueden ver mediante programación usando los procedimientos almacenados de replicación. Para más información, consulte Replicación de mezcla avanzada: detección y resolución de conflictos.

  1. En la base de datos de publicación del publicador, ejecute sp_helpmergepublication. Tenga en cuenta los valores de las siguientes columnas en el conjunto de resultados:

    • centralized_conflicts : 1 indica que las filas de conflicto están almacenadas en el Publicador y 0 indica que las filas de conflicto no están almacenadas en el Publicador.

    • decentralized_conflicts : 1 indica que las filas de conflicto están almacenadas en el Suscriptor y 0 indica que las filas de conflicto no están almacenadas en el Suscriptor.

      Nota:

      El comportamiento del registro de conflictos de una publicación de combinación se establece mediante el parámetro @conflict_logging de sp_addmergepublication. El uso del parámetro @centralized_conflicts ha quedado en desuso.

    En la tabla siguiente se describen los valores de estas columnas en función del valor especificado para @conflict_logging.

    valor @conflict_logging centralized_conflicts decentralized_conflicts
    publisher 1 0
    subscriber 0 1
    ambos 1 1
  2. En el publicador de la base de datos de publicación o en el suscriptor de la base de datos de suscripciones, ejecute sp_helpmergearticleconflicts. Especifique un valor para @publication a fin de devolver únicamente información de conflicto para los artículos que pertenecen a una publicación concreta. Esto devuelve información de la tabla de conflictos para los artículos con conflictos. Tenga en cuenta el valor de conflict_table para cualquier artículo de interés. Si el valor de conflict_table para un artículo es NULL, basta con que elimine los conflictos que se han producido en este artículo.

  3. (Opcional) Revise las filas de conflicto para los artículos de interés. Según los valores de centralized_conflicts y decentralized_conflicts del paso 1, realice una de las siguientes operaciones:

    • En la base de datos de publicación del publicador, ejecute sp_helpmergeconflictrows. Especifique una tabla de conflictos para el artículo (del paso 1) para @conflict_table. (Opcional) Especifique un valor de @publication para restringir la información de conflicto devuelta a una publicación concreta. Esto devuelve datos de fila y otra información para la fila perdedora.

    • En el suscriptor de la base de datos de suscripciones, ejecute sp_helpmergeconflictrows. Especifique una tabla de conflictos para el artículo (del paso 1) para @conflict_table. Esto devuelve datos de fila y otra información para la fila perdedora.

Conflicto de error de eliminación

  1. En la base de datos de publicación del publicador, ejecute sp_helpmergepublication. Tenga en cuenta los valores de las siguientes columnas en el conjunto de resultados:

    • centralized_conflicts : 1 indica que las filas de conflicto están almacenadas en el Publicador y 0 indica que las filas de conflicto no están almacenadas en el Publicador.

    • decentralized_conflicts : 1 indica que las filas de conflicto están almacenadas en el Suscriptor y 0 indica que las filas de conflicto no están almacenadas en el Suscriptor.

      Nota:

      El comportamiento del registro de conflictos de una publicación de combinación se establece mediante el parámetro @conflict_logging de sp_addmergepublication. El uso del parámetro @centralized_conflicts ha quedado en desuso.

  2. En el publicador de la base de datos de publicación o en el suscriptor de la base de datos de suscripciones, ejecute sp_helpmergearticleconflicts. Especifique un valor para @publication a fin de devolver únicamente información de tabla de conflictos para los artículos que pertenecen a una publicación concreta. Esto devuelve información de la tabla de conflictos para los artículos con conflictos. Tenga en cuenta el valor de source_object para cualquier artículo de interés. Si el valor de conflict_table para un artículo es NULL, basta con que elimine los conflictos que se han producido en este artículo.

  3. (Opcional) Revise la información de conflictos para conflictos de eliminación. Según los valores de centralized_conflicts y decentralized_conflicts del paso 1, realice una de las siguientes operaciones:

    • En la base de datos de publicación del publicador, ejecute sp_helpmergedeleteconflictrows. Especifique el nombre de la tabla de origen (del paso 1) en la que el conflicto se ha producido para @source_object. (Opcional) Especifique un valor de @publication para restringir la información de conflicto devuelta a una publicación concreta. Esto devuelve elimine la información de eliminación de conflictos almacenada en el publicador.

    • En el suscriptor de la base de datos de suscripciones, ejecute sp_helpmergedeleteconflictrows. Especifique el nombre de la tabla de origen (del paso 1) en la que el conflicto se ha producido para @source_object. (Opcional) Especifique un valor de @publication para restringir la información de conflicto devuelta a una publicación concreta. Esto devuelve elimine la información de eliminación de conflictos almacenada en el suscriptor.