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 mezcla 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 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 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
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 : <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 La 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>
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.
Haga clic en Establecer propiedades del artículo de Tabla resaltado o Establecer propiedades de todos los artículos de la tabla.
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:
- Solo descargar en suscriptor y prohibir cambios del suscriptor
- Solo descargar en suscriptor y permitir cambios del suscriptor
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.
Usar Transact-SQL
Para especificar que un nuevo artículo de tabla de mezcla es de solo descarga
Ejecute sp_addmergearticle, especificando el valor 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 ambos artículos.
Para cambiar un artículo de tabla de mezcla existente a solo descarga
Para determinar si un artículo es de solo descarga, ejecute sp_helpmergearticle. Tenga en cuenta el valor de upload_options para el artículo en el conjunto de resultados.
Si el valor devuelto en el paso 1 es 0, ejecute sp_changemergearticle, especificando el valor subscriber_upload_options para @property, un valor 1 para @force_invalidate_snapshot y @force_reinit_subscriptiony un valor 1 o 2 para @value, lo que 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.
Resolución interactiva de conflictos
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 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 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
- 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.
- 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.
- En la página Propiedades del artículo : <> Propiedades del artículo o artículo - <ArticleType>, haga clic en la pestaña Resolver.
- Seleccione Permitir que el suscriptor resuelva los conflictos de modo interactivo durante la sincronización a petición.
- Haga clic en OK.
- 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 utilizar la resolución interactiva de conflictos
- En el cuadro de diálogo Propiedades de suscripción - <Suscriptor>: <SubscriptionDatabase> , especifique un valor de True para la opción Resolver conflictos de forma 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.
- Haga clic en OK.
Usar 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
En la base de datos de publicación del publicador, ejecute sp_helpmergearticle, especificando @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, especificando @publication, @article, el valor allow_interactive_resolver para @propertyy el valor true para @value.
En la base de datos de suscripciones del suscriptor, ejecute sp_addmergepullsubscription. Para obtener más información, consulte Create a Pull Subscription.
En la base de datos de suscripciones del suscriptor, ejecute sp_addmergesubscription_agenty especifique los siguientes parámetros:
- @publisher, @ publisher_db (la base de datos publicada) y @publication.
- El valor true para @enabled_for_syncmgr.
- El valor 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.
En la base de datos de publicación del publicador, ejecute sp_addmergesubscription.
Definición de un artículo que admita el Solucionador interactivo
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 está publicando para @ source_objecty el 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 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 el seguimiento de fila o de columna para artículos de combinació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.
Especificación del seguimiento por fila o columna
- 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.
- 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.
- En la pestaña Propiedades del cuadro de diálogo Artículo propiedades <del artículo> , seleccione uno de los valores siguientes para la propiedad Nivel deseguimiento: Seguimiento de nivel de fila o Seguimiento de nivel de columna.
- 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.
Usar Transact-SQL
Especificación de opciones de seguimiento de conflictos para un nuevo artículo de combinación
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
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.
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.
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 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
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 están omitiendo las eliminaciones.
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 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. 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 combinación. Esto resulta útil, por ejemplo, si define la integridad referencial a través de desencadenadores que se deben activar en un orden determinado.
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 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).
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
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 en @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
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.
En la base de datos de publicación del publicador, 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 seguimiento condicional de eliminaciones
Detecting and Resolving Conflicts in Logical Records
Definir una relación de registros lógicos entre artículos de tabla de mezcla
Detectar y solucionar conflictos de replicación de mezcla
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