Compartir a través de


Especificar propiedades de replicación de mezcla

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

Solo descarga

En esta sección se describe cómo especificar que un artículo de tabla de combinación es de solo descarga en SQL Server 2014 mediante SQL Server Management Studio o Transact-SQL. Los artículos de solo descarga están diseñados para aplicaciones con datos que no se actualizan en los Suscriptores. Para más información, vea Optimizar el rendimiento de la replicación de mezcla con artículos de solo descarga.

Limitaciones y restricciones

  • Si especifica que un artículo es de solo descarga una vez inicializadas las suscripciones, se deben reinicializar todas las suscripciones de cliente que recibieron el artículo. No es necesario reinicializar las suscripciones de servidor. Para obtener más información sobre los efectos de los cambios de propiedad, vea Cambiar las propiedades de publicación y artículo.

Uso de SQL Server Management Studio

Especifique que un artículo es de solo descarga en la página Artículos del Asistente para nueva publicación o en la pestaña Propiedades del cuadro de diálogo Propiedades del Artículo - <Artículo>. Este cuadro de diálogo está disponible en el Asistente para nueva publicación y en el cuadro de diálogo Propiedades de la <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.

Para especificar que un artículo es de solo descarga 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 Tabla resaltada es de solo descarga.

Para especificar que un artículo es de solo descarga en la pestaña Propiedades del cuadro de diálogo Propiedades del artículo : <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, a continuación, 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 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 sincronización:

    • Descargar en el Suscriptor, prohibir cambios por parte del Suscriptor
    • Descargar para el suscriptor, permitir que el suscriptor realice cambios
  4. Si está 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 que un nuevo artículo de tabla de combinación sea de solo descarga

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

    • 0 - Sin restricciones (valor predeterminado). Los cambios realizados en el suscriptor se cargan en el publicador.

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

    • 2 - No se permiten 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 ambos artículos.

Para modificar un artículo de tabla de combinación existente para que sea de solo descarga

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

  2. Si el valor devuelto en el paso 1 es 0, ejecute sp_changemergearticle, especificando un valor de 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, que corresponde al siguiente comportamiento:

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

    • 2 - No se permiten 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.

Resolución interactiva de conflictos

La replicación de Microsoft SQL Server proporciona un solucionador interactivo, que permite resolver los 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 de forma interactiva 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 obtener más información, vea Sincronizar una suscripción mediante el Administrador de sincronización de Windows (Administrador de sincronización de Windows).

Recomendaciones

  • Si una sincronización se realiza 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 intervención del usuario, mediante la resolución de conflictos predeterminada especificada para el artículo. Para obtener más información, vea 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 de artículo y, a continuación, haga clic en Establecer propiedades de artículo de tabla resaltado o Establecer propiedades de todos los artículos de tabla.
  3. En la página Propiedades del artículo - <Artículo> o Propiedades del artículo - <Tipo de artículo>, haga clic en la pestaña Resolver.
  4. Seleccione Permitir que el suscriptor resuelva los conflictos de forma interactiva durante la sincronización a petición.
  5. Haz clic en Aceptar.
  6. Si está 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.

Para especificar 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>: <SubscriptionDatabase>, especifique un valor true para la opción Resolver conflictos de forma interactiva. Para obtener más información sobre cómo acceder a esta ventana de diálogo, consulte Visualizar y modificar las propiedades de suscripción de inserción y Visualizar y modificar las propiedades de suscripción de extracción.
  2. Haz clic en Aceptar.

Uso de Transact-SQL

Puede especificar mediante programación que un suscriptor usará esta interfaz gráfica para resolver conflictos de artículos cuando se crea una suscripción de extracción a una publicación de fusión. Solo se mostrarán conflictos en los artículos que admiten esta opción en el Solucionador interactivo.

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 usará el solucionador interactivo.

    • Si este valor es 1, se usará el solucionador interactivo.
    • Si este valor es 0, primero debe habilitar el Solucionador interactivo para cada artículo. Para ello, ejecute sp_changemergearticle, especifique @publication, @article, un valor de allow_interactive_resolver para @property y un valor true para@value.
  2. En el suscriptor de la base de datos de suscripciones, ejecute sp_addmergepullsubscription. Para obtener más información, vea Crear una suscripción de extracción.

  3. En el suscriptor de la base de datos de suscripciones, ejecute sp_addmergepullsubscription_agent y especifique los parámetros siguientes:

    • @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 requerida por el Agente de combinación. Para obtener más información, vea Crear una suscripción de extracción.
  4. En el servidor de publicador de la base de datos destinada a la publicación, ejecute sp_addmergesubscription.

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

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

Especificar el nivel de seguimiento y resolución de conflictos

Cuando se sincroniza una suscripción a una publicación de mezcla, la replicación comprueba si hay conflictos causados por cambios en los mismos datos realizados en el publicador y en el suscriptor. Puede especificar si los conflictos se detectan en el nivel de fila, donde cualquier cambio en la fila se considera un conflicto o un nivel de columna, donde solo se consideran conflictos los cambios realizados en la misma fila y columna. La resolución de conflictos para los artículos se realiza a 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 Detección y resolución de conflictos en registros lógicos.

Limitaciones y restricciones

  • Si modifica el nivel de seguimiento después de inicializar las suscripciones, esas suscripciones deben reinicializarse. Para obtener más información sobre los efectos de los cambios de propiedad, vea Cambiar las propiedades de publicación y artículo.
  • Con el seguimiento a nivel de filas y columnas, la resolución de conflictos siempre se realiza a nivel de fila: la fila ganadora sobrescribe a la fila perdedora. La replicación de mezcla también permite especificar que se realice un seguimiento de los conflictos y que se resuelvan al nivel del registro lógico, pero estas opciones no están disponibles en SQL Server Management Studio. Para obtener información sobre cómo establecer estas opciones a partir de procedimientos almacenados de replicación, vea Definir una relación de registro lógico entre artículos de tabla de mezcla.

Uso de SQL Server Management Studio

Especifique el seguimiento a nivel de fila o columna para artículos de fusión en la pestaña Propiedades del cuadro de diálogo Propiedades del artículo, que está disponible en el Asistente para nueva publicación y en 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.

Especificar el seguimiento a nivel de 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 de artículo y, a continuación, haga clic en Establecer propiedades de artículo de tabla resaltado o Establecer propiedades de todos los artículos de tabla.
  3. En la pestaña Propiedades del cuadro de diálogo Propiedades del artículo< del artículo>, seleccione uno de los siguientes valores para la propiedad Nivel de seguimiento: Seguimiento de nivel de fila o Seguimiento de nivel de columna.
  4. Si está 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

Especificación de 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 siguientes valores para @column_tracking:

    • true - Utilice el seguimiento de nivel de columna para el artículo.
    • false - Usa el seguimiento a nivel de fila, que es el valor predeterminado.

Cambiar las opciones de seguimiento de conflictos para un artículo de combinación

  1. Para determinar las opciones de seguimiento de conflictos de un artículo de combinación, ejecute sp_helpmergearticle. Anote el valor de la opción column_tracking en el conjunto de resultados del artículo. Un valor de 1 significa que se usa el seguimiento de nivel de columna y un valor de 0 significa que se usa 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 siguientes valores para @value:

    • true - Usa el seguimiento de nivel de columna para el artículo.
    • false - Use Seguimiento a nivel de fila, que es el valor predeterminado.

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

Eliminaciones de seguimiento

Nota:

Esta característica se quitará en una versión futura de Microsoft 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 el suscriptor. La replicación de mezcla permite conservar las filas de la base de datos de suscripciones incluso cuando se han eliminado de la publicación y viceversa. Puede especificar mediante programación que los comandos DELETE se omiten al crear un nuevo artículo o puede habilitar esta funcionalidad más adelante mediante procedimientos almacenados de replicación.

Importante

La habilitación de esta funcionalidad dará lugar a una 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.

Especificar que las eliminaciones se omitan para un nuevo artículo de combinación

  1. En el publicador de la base de datos de publicación, 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 para ambos artículos.

Especificar que las eliminaciones se omitan para un artículo de combinación existente

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

  2. Si el valor del paso 1 es 1, ejecute sp_changemergearticle (Transact-SQL) en el publicador de la base de datos de publicación. 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 para ambos artículos.

Pedido de procesamiento

La replicación de mezcla permite especificar el orden en el que el Agente de mezcla procesa los artículos durante el proceso de sincronización. Puede asignar una orden a cada artículo de forma programática al crear un artículo utilizando procedimientos almacenados de replicación. Los artículos se procesan en orden de menor a mayor valor. Si existen dos artículos que tienen el mismo valor, se procesan al mismo tiempo. Para más información, vea Specify merge replication properties (Especificación de propiedades de replicación de mezcla).

A partir de Microsoft SQL Server 2005, es posible invalidar el orden predeterminado de procesamiento de artículos para publicaciones de mezcla. Esto es útil, por ejemplo, si define la integridad referencial a través de desencadenadores y esos desencadenadores deben activarse en un orden determinado.

Cómo se determina el orden de procesamiento

Durante la sincronización de mezcla, los artículos se procesan de forma predeterminada 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 en una tabla y, a continuación, aplicar esos cambios. Si no hay ningún DRI, pero existen filtros de combinación o registros lógicos entre artículos de tabla, los artículos se procesan en el orden requerido por los filtros y los registros lógicos. Los artículos no relacionados con ningún otro artículo a través de DRI, filtros de combinación, registros lógicos u otras dependencias se procesan según el alias del artículo en la tabla del sistema sysmergearticles (Transact-SQL).

Considere una publicación que incluya 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 por combinación evita violaciones de claves externas insertando las filas nuevas en SalesOrderHeader antes de insertar las filas asociadas en SalesOrderDetail. De forma similar, las filas se eliminan de SalesOrderDetail antes de que se elimine la fila asociada de SalesOrderHeader.

Sin embargo, en algunas aplicaciones se aplica integridad referencial a través de desencadenadores de base de datos o en el nivel de aplicación, en lugar de a través de DRI. Dada la publicación descrita anteriormente, en lugar de DRI, la tabla SalesOrderDetail podría tener un desencadenador de inserción que garantice 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 garantice que no haya filas asociadas en SalesOrderDetail antes de permitir una eliminación. La replicación de mezcla no tiene en cuenta los desencadenadores al determinar el orden de procesamiento de los artículos porque no puede determinar cuál será el resultado del desencadenador hasta que se haya desencadenado. De forma similar, la replicación no puede tener en cuenta las restricciones definidas en el nivel de aplicación.

Cuando se mantiene la integridad referencial a través de 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, especificaría que la tabla SalesOrderHeader se debe procesar antes de SalesOrderDetail, ya que el orden de artículos se basa en el pedido de inserción. La replicación de mezcla invertirá el orden de las eliminaciones de forma automática. No se producirá un error en la replicación de mezcla sin ordenar el artículo, ya que el Agente de mezcla sigue procesando artículos si se produce una infracción de restricción; Después, vuelve a intentar las operaciones que han producido un error después de que se hayan procesado otros artículos. Especificar el orden del artículo simplemente evita reintentos y el procesamiento adicional asociado a ellos. Si especifica un orden incorrecto (por ejemplo, uno que da como resultado que se procesen registros detallados antes de los registros de encabezado), la replicación por mezcla reintentará el procesamiento hasta que se realice correctamente.

Nuevo artículo

  1. En el publicador de la base de datos de publicación, 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, debe dejar huecos entre los valores de orden del artículo. Esto facilita el establecimiento de nuevos valores en el futuro. Por ejemplo, si tiene tres artículos para los que debe especificar un orden de procesamiento fijo, establezca el valor de @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 anote 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 un valor de processing_order para @property y un valor entero que represente el orden de procesamiento de @value.

Véase también

Optimización del rendimiento de la replicación de mezcla con seguimiento de eliminación condicional
Detección y resolución de conflictos en registros lógicos
Definir una relación de registros lógicos entre artículos de tabla de mezcla
Detectar y resolver conflictos de replicación de fusión
Optimización del rendimiento de la replicación de mezcla con artículos de Download-Only
Definir un artículo
Ver y modificar las propiedades de los artículos