Especificación de las propiedades de replicación de mezcla

Se aplica a:SQL Server

En este tema se explica cómo especificar varias propiedades para la replicación de mezcla.

El artículo de mezcla es de solo descarga

Los artículos de solo descarga están diseñados para aplicaciones con datos que no se actualizan en suscriptores. Para más información, vea Optimizar el rendimiento de la replicación de mezcla con artículos de solo descarga.

Consideraciones

  • Si se especifica que un artículo es de solo descarga después de haber inicializado las suscripciones, deben reinicializarse todas las suscripciones de cliente que reciben el artículo. No se tienen que reinicializar las suscripciones de servidor. Para obtener más información sobre los efectos de los cambios de propiedad, vea Change Publication and Article Properties (Cambiar las propiedades de la publicación y de los artículos).

Uso de SQL Server Management Studio

En la página Artículos

En la página Artículos del Asistente para nueva publicación, seleccione una tabla y, a continuación, active la casilla La tabla resaltada es de solo descarga.

En la pestaña Propiedades de las propiedades del artículo

  1. En la página Artículos del Asistente para nueva publicación o en el cuadro de diálogo Propiedades de la publicación: <publicación>, seleccione una tabla y luego haga clic en Propiedades del artículo.

  2. Haga clic en Establecer propiedades del artículo de Tabla resaltado o Establecer propiedades de todos los artículos de la tabla.

  3. En la sección Objeto de destino de la pestaña Propiedades del cuadro de diálogo Propiedades del artículo: <artículo>, especifique uno de los siguientes valores para Dirección de la sincronización:

    • Solo descargar en suscriptor y prohibir cambios del suscriptor
    • Solo descargar en suscriptor y permitir cambios del suscriptor
  4. Si se encuentra en el cuadro de diálogo Propiedades de la publicación: <Publicación>, haga clic en Aceptar para guardar y cerrar el cuadro de diálogo.

Uso de Transact-SQL

Nuevo artículo

  1. Ejecute sp_addmergearticle y especifique un valor de 1 o 2 para el parámetro @subscriber_upload_options. Los números corresponden al comportamiento siguiente:

    • 0 - Ninguna restricción (valor predeterminado). Los cambios realizados en el suscriptor se cargan en el publicador.
    • 1 - Se permiten cambios en el suscriptor, pero no se cargan en el publicador.
    • 2 - No se permite realizar cambios en el suscriptor.

    Nota:

    Si la tabla de origen de un artículo ya está publicada en otra publicación, el valor de @subscriber_upload_options debe ser el mismo para los dos artículos.

Artículo existente

  1. Para determinar si un artículo es de solo descarga, ejecute sp_helpmergearticle y compruebe el valor de upload_options para el artículo en el conjunto de resultados.

  2. Si el valor devuelto en el paso 1 es 0, ejecute sp_changemergearticle, y especifique el valor subscriber_upload_options para @property, un valor de 1 para @force_invalidate_snapshot y @force_reinit_subscription, y un valor de 1 o 2 para @value, lo que se corresponde al comportamiento siguiente:

    • 1 - Se permiten cambios en el suscriptor, pero no se cargan en el publicador.

    • 2 - No se permite realizar cambios en el suscriptor.

      Nota:

      Si la tabla de origen de un artículo ya está publicada en otra publicación, el comportamiento de solo descarga debe ser el mismo para ambos artículos.

Interactive Conflict Resolution

La replicación de Microsoft SQL Server proporciona un Solucionador interactivo que permite solucionar conflictos manualmente durante la sincronización a petición en el Administrador de sincronización de Microsoft Windows. Una vez habilitada la resolución interactiva, resuelva los conflictos interactivamente durante la sincronización, mediante el Solucionador interactivo. 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).

Recomendaciones

  • Si se realiza una sincronización fuera del Administrador de sincronización de Windows (como una sincronización programada o una sincronización a petición en SQL Server Management Studio o el Monitor de replicación), los conflictos se resuelven automáticamente sin la intervención del usuario, utilizando la resolución especificada para el artículo. Para obtener más información, consulte Interactive Conflict Resolution.

Uso de SQL Server Management Studio

Habilitación de la resolución interactiva de conflictos para un artículo

  1. En la página Artículos del Asistente para nueva publicación o en el cuadro de diálogo Propiedades de la publicación: <publicación>, seleccione una tabla. Para obtener más información sobre el uso del asistente y el acceso al cuadro de diálogo, consulte Create a Publication (Crear una publicación) y Ver y modificar propiedades de publicación.
  2. Haga clic en Propiedades del artículoy, a continuación, haga clic en Establecer propiedades del artículo de tabla resaltado o en Establecer propiedades de todos los artículos de la tabla.
  3. En la página Propiedades del artículo - <artículo> o Propiedades del artículo - <TipoArtículo>, haga clic en la pestaña Resolución.
  4. Seleccione Permitir que el suscriptor resuelva los conflictos de modo interactivo durante la sincronización a petición.
  5. Seleccione Aceptar.
  6. Si se encuentra en el cuadro de diálogo Propiedades de la publicación: <Publicación>, haga clic en Aceptar para guardar y cerrar el cuadro de diálogo.

Especificación de que una suscripción debe usar la resolución interactiva de conflictos

  1. En el cuadro de diálogo Propiedades de la suscripción - <suscriptor>: <BaseDeDatosDeSuscripción>, especifique el valor True para la opción Solucionar conflictos de manera interactiva. Para obtener más información acerca de cómo obtener acceso a este cuadro de diálogo, vea View and Modify Push Subscription Properties y View and Modify Pull Subscription Properties.
  2. Seleccione Aceptar.

Uso de Transact-SQL

Puede especificar mediante programación que el suscriptor utilizará esta interfaz gráfica para solucionar conflictos de artículos cuando se cree una suscripción de extracción a una publicación de combinación. Solo se mostrarán en el Solucionador interactivo los conflictos de artículos que admitan esta opción.

Creación de una suscripción de extracción de mezcla que use el Solucionador interactivo

  1. En la base de datos de publicación del publicador, ejecute sp_helpmergearticle y especifique @publication. Tenga en cuenta el valor de allow_interactive_resolver para cada artículo del conjunto de resultados para el que se utilizará el Solucionador interactivo.
    • Si este valor es 1, se utilizará el Solucionador interactivo.
    • Si este valor es 0, debe habilitar primero el Solucionador interactivo para cada artículo. Para ello, ejecute sp_changemergearticle, y especifique @publication, @article, un valor de allow_interactive_resolver para @property y un valor de true para @value.
  2. En la base de datos de suscripciones del suscriptor, ejecute sp_addmergepullsubscription. Para obtener más información, consulte Create a Pull Subscription.
  3. En la base de datos de suscripciones del suscriptor, ejecute sp_addmergesubscription_agent y especifique los siguientes parámetros:
    • @publisher, @publisher_db (la base de datos publicada) y @publication.
    • Un valor de true para @enabled_for_syncmgr.
    • Un valor de true para @use_interactive_resolver.
    • La información de la cuenta de seguridad que necesita el Agente de mezcla. Para obtener más información, consulte Create a Pull Subscription.
  4. En la base de datos de publicación del publicador, ejecute sp_addmergesubscription.

Definición de un artículo que admita el Solucionador interactivo

  1. En la base de datos de publicación del publicador, ejecute sp_addmergearticle. Especifique el nombre de la publicación a la que pertenece el artículo para @publication, un nombre de artículo para @article, el objeto de base de datos que se va a publicar para @source_object y un valor de true para @allow_interactive_resolver. Para más información, consulte Define an Article.

Seguimiento de conflictos y el nivel de resolución para los artículos de mezcla

En este tema se describe cómo especificar el nivel de seguimiento y resolución de conflictos de los artículos de mezcla en SQL Server mediante SQL Server Management Studio o Transact-SQL.

Cuando se sincroniza una suscripción a una publicación de combinación, la replicación comprueba los conflictos producidos por los cambios a los mismos datos realizados en el Publicador y el Suscriptor. Puede especificar si los conflictos se detectan en el nivel de fila, donde cualquier cambio a la fila se considera un conflicto, o en el nivel de columna, donde solo se consideran un conflicto los cambios a la misma fila y columna. La resolución de conflictos para los artículos se realiza en el nivel de fila. Para obtener más información sobre la detección y resolución de conflictos cuando se usan registros lógicos, vea Detecting and Resolving Conflicts in Logical Records.

Limitaciones y restricciones

  • Si modifica el nivel de seguimiento después de que se hayan inicializado las suscripciones, se deben reinicializar dichas suscripciones. Para obtener más información sobre los efectos de los cambios de propiedad, vea Change Publication and Article Properties (Cambiar las propiedades de la publicación y de los artículos).
  • Con el seguimiento por columna y por fila, la resolución de conflictos se realiza siempre en el nivel de fila: la fila ganadora sobrescribe la fila perdedora. La replicación de mezcla también le permite especificar que se realice un seguimiento de los conflictos y se resuelvan en el nivel de registro lógico, pero dichas opciones no están disponibles en SQL Server Management Studio. Para obtener información acerca de cómo establecer estas opciones con procedimientos almacenados de replicación, vea Definir una relación de registros lógicos entre artículos de tabla de mezcla.

Uso de SQL Server Management Studio

Especifique seguimiento de nivel de columna o fila para los artículos de mezcla en la pestaña Propiedades del cuadro de diálogo Propiedades del artículo, disponible en el Asistente para nueva publicación y el cuadro de diálogo Propiedades de la publicación: <publicación>. Para obtener más información sobre el uso del asistente y el acceso al cuadro de diálogo, consulte Create a Publication (Crear una publicación) y Ver y modificar propiedades de publicación.

Especificación del seguimiento por fila o columna

  1. En la página Artículos del Asistente para nueva publicación o en el cuadro de diálogo Propiedades de la publicación: <publicación>, seleccione una tabla.
  2. Haga clic en Propiedades del artículoy, a continuación, haga clic en Establecer propiedades del artículo de tabla resaltado o en Establecer propiedades de todos los artículos de la tabla.
  3. En la pestaña Propiedades del cuadro de diálogo Propiedades del artículo: <artículo>, seleccione uno de los valores siguientes para la propiedad Nivel de seguimiento: Seguimiento por fila o Seguimiento por columna.
  4. Si se encuentra en el cuadro de diálogo Propiedades de la publicación: <Publicación>, haga clic en Aceptar para guardar y cerrar el cuadro de diálogo.

Uso de Transact-SQL

Para especificar las opciones de seguimiento de conflictos para un nuevo artículo de combinación

  1. En la base de datos de publicación del publicador, ejecute sp_addmergearticle y especifique uno de los valores siguientes para @column_tracking:

    • true : Use el seguimiento del nivel de columna para el artículo.
    • falso : Use el seguimiento de nivel de fila, que es el valor predeterminado.

Cambio de las opciones de seguimiento de conflictos para un artículo de mezcla

  1. Para determinar las opciones de seguimiento de conflictos para un artículo de mezcla, ejecute sp_helpmergearticle. Tenga en cuenta el valor de la opción column_tracking en el conjunto de resultados para el artículo. Un valor de 1 indica que se está usando el seguimiento del nivel de columna y un valor de 0 indica que se está usando el seguimiento de nivel de fila.

  2. En la base de datos de publicación del publicador, ejecute sp_changemergearticle. Especifique un valor de column_tracking para @property y uno de los valores siguientes para @value:

    • true : Use el seguimiento del nivel de columna para el artículo.
    • falso : Use el seguimiento de nivel de fila, que es el valor predeterminado.

    Especifique un valor de 1 para @force_invalidate_snapshot y @force_reinit_subscription.

Administración del seguimiento de eliminaciones

Nota:

Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.

De forma predeterminada, la replicación de mezcla sincroniza los comandos DELETE entre el Publicador y Suscriptor. La replicación de mezcla le permite conservar filas en la base de datos de suscripciones incluso cuando se han eliminado de la publicación, y viceversa. Puede especificar mediante programación que se omitan los comandos DELETE al crear un nuevo artículo o puede habilitar esta funcionalidad en un momento posterior usando los procedimientos almacenados de replicación.

Importante

Al habilitar esta funcionalidad se producirá la no convergencia, lo que significa que los datos presentes en el Suscriptor no reflejarán con precisión los datos en el Publicador. Debe implementar su propio mecanismo para quitar manualmente las filas eliminadas.

Especificación de la omisión de las eliminaciones para un artículo de mezcla nuevo

En la base de datos de publicación del publicador, ejecute sp_addmergearticle (Transact-SQL). Especifique un valor de false para @delete_tracking. Para más información, consulte Define an Article.

Nota:

Si la tabla de origen de un artículo ya está publicada en otra publicación, el valor de delete_tracking debe ser el mismo en los dos artículos.

Especificación de la omisión de las eliminaciones para un artículo de mezcla existente

  1. Para determinar si la compensación de errores está habilitada para un artículo, ejecute sp_helpmergearticle (Transact-SQL) y observe el valor de delete_tracking en el conjunto de resultados. Si este valor es 0, ya se están omitiendo las eliminaciones.

  2. Si el valor del paso 1 es 1, ejecute sp_changemergearticle (Transact-SQL) en la base de datos de publicación del publicador. Especifique un valor de delete_tracking para @property y un valor de false para @value.

    Nota:

    Si la tabla de origen de un artículo ya está publicada en otra publicación, el valor de delete_tracking debe ser el mismo en los dos artículos.

Orden de procesamiento

La replicación de mezcla le permite especificar el orden en el que el Agente de mezcla procesa los artículos durante el proceso de sincronización. Al crear cada artículo, puede asignarle un orden mediante programación utilizando los procedimientos almacenados de replicación. Los artículos se procesan en orden desde el valor menor al mayor. Si existen dos artículos que tienen el mismo valor, se procesan al mismo tiempo.

Cómo se determina el orden de procesamiento

De manera predeterminada, durante la sincronización de mezcla, los artículos se procesan en el orden requerido por las dependencias entre objetos, incluidas las restricciones de integridad referencial declarativa (DRI) definidas en las tablas base. El procesamiento implica enumerar los cambios de una tabla y aplicar esos cambios a continuación. Si no hay DRI presente pero hay filtros de combinación o registros lógicos entre los artículos de la tabla, los artículos se procesan en el orden que requieran los filtros y los registros lógicos. Los artículos que no estén relacionados con ningún otro artículo mediante DRI, filtros de combinación, registros lógicos u otras dependencias, se procesan según el alias del artículo de la tabla de sistema sysmergearticles (Transact-SQL).

Imagine una publicación que incluye las tablas SalesOrderHeader y SalesOrderDetail con una columna de clave principal SalesOrderID en la tabla SalesOrderHeader y una columna de clave externa correspondiente SalesOrderID en la tabla SalesOrderDetail . Durante la sincronización, la replicación de mezcla impide infracciones de clave externa insertando cualquier fila nueva en SalesOrderHeader antes de insertar filas asociadas en SalesOrderDetail. De forma similar, las filas se eliminan de SalesOrderDetail antes de que la fila asociada se elimine de SalesOrderHeader.

Sin embargo, en algunas aplicaciones, la integridad referencial se ve reforzada mediante desencadenadores de base de datos, o en el nivel de aplicación, y no mediante DRI. Si tomamos la publicación descrita más arriba, en vez de DRI, la tabla SalesOrderDetail podría tener un desencadenador de inserción que asegure que la fila asociada en la tabla SalesOrderHeader exista antes de permitir una inserción. SalesOrderHeader podría tener un desencadenador de eliminación que asegure que no haya filas asociadas en SalesOrderDetail antes de permitir una eliminación. La replicación de mezcla no tiene en cuenta los desencadenadores cuando determina el orden de procesamiento de artículos porque no puede determinar los resultados del desencadenador hasta que se haya activado. De forma similar, la replicación no puede tener en cuenta las restricciones definidas en el nivel de aplicación.

Cuando la integridad referencial se mantiene a través de los desencadenadores o en el nivel de aplicación, debe especificar el orden en el que se deben procesar los artículos. En el ejemplo con desencadenadores, debería especificar que la tabla SalesOrderHeader se debe procesar antes que SalesOrderDetail, puesto que el orden de los artículos se basa en el orden de inserción. La replicación de mezcla invertirá automáticamente el orden de las eliminaciones. La replicación de mezcla no producirá ningún error sin el orden de los artículos, porque el Agente de mezcla sigue procesando artículos si se produce una infracción de restricción. Lo que hace es reintentar las operaciones que hayan dado error cuando los otros artículos se hayan terminado de procesar. Especificar el orden de los artículos únicamente impide los reintentos y los procesos adicionales asociados con ellos. Si especifica un orden incorrecto (por ejemplo, uno que dé como resultado el procesamiento de los registros de detalle antes que el de los registros de encabezado), la replicación de mezcla volverá a realizar el proceso hasta que lo consiga.

Nuevo artículo

  1. En la base de datos de publicación del publicador, ejecute sp_addmergearticle (Transact-SQL). Especifique un valor entero que represente el orden de procesamiento del artículo para @processing_order. Para más información, consulte Define an Article.

    Nota:

    Al crear artículos ordenados, debería dejar huecos entre los valores de orden de los artículos. Esto le permitirá establecer nuevos valores en el futuro con mayor facilidad. Por ejemplo, si tiene tres artículos para los que necesita especificar un orden de procesamiento fijo, establezca el valor @processing_order en 10, 20 y 30 en lugar de 1, 2 y 3, respectivamente.

Artículo existente

  1. Para determinar el orden de procesamiento de un artículo, ejecute sp_helpmergearticle (Transact-SQL) y tenga en cuenta el valor de processing_order en el conjunto de resultados.
  2. En el publicador de la base de datos de publicación, ejecute sp_changemergearticle (Transact-SQL). Especifique el valor processing_order para @property y un valor entero que represente el orden de procesamiento para @value.

Consulte también

Optimizar el rendimiento de la replicación de mezcla con artículos de solo descarga
Definir un artículo
er y modificar las propiedades de un artículo