Compartir vía


sp_addmergearticle (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Agrega un artículo a una publicación de combinación existente. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_addmergearticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    , [ @source_object = ] N'source_object'
    [ , [ @type = ] N'type' ]
    [ , [ @description = ] N'description' ]
    [ , [ @column_tracking = ] N'column_tracking' ]
    [ , [ @status = ] N'status' ]
    [ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
    [ , [ @creation_script = ] N'creation_script' ]
    [ , [ @schema_option = ] schema_option ]
    [ , [ @subset_filterclause = ] N'subset_filterclause' ]
    [ , [ @article_resolver = ] N'article_resolver' ]
    [ , [ @resolver_info = ] N'resolver_info' ]
    [ , [ @source_owner = ] N'source_owner' ]
    [ , [ @destination_owner = ] N'destination_owner' ]
    [ , [ @vertical_partition = ] N'vertical_partition' ]
    [ , [ @auto_identity_range = ] N'auto_identity_range' ]
    [ , [ @pub_identity_range = ] pub_identity_range ]
    [ , [ @identity_range = ] identity_range ]
    [ , [ @threshold = ] threshold ]
    [ , [ @verify_resolver_signature = ] verify_resolver_signature ]
    [ , [ @destination_object = ] N'destination_object' ]
    [ , [ @allow_interactive_resolver = ] N'allow_interactive_resolver' ]
    [ , [ @fast_multicol_updateproc = ] N'fast_multicol_updateproc' ]
    [ , [ @check_permissions = ] check_permissions ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @published_in_tran_pub = ] N'published_in_tran_pub' ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection' ]
    [ , [ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution' ]
    [ , [ @partition_options = ] partition_options ]
    [ , [ @processing_order = ] processing_order ]
    [ , [ @subscriber_upload_options = ] subscriber_upload_options ]
    [ , [ @identityrangemanagementoption = ] N'identityrangemanagementoption' ]
    [ , [ @delete_tracking = ] N'delete_tracking' ]
    [ , [ @compensate_for_errors = ] N'compensate_for_errors' ]
    [ , [ @stream_blob_columns = ] N'stream_blob_columns' ]
[ ; ]

Argumentos

[ @publication = ] N'publication'

Nombre de la publicación que contiene el artículo. @publication es sysname, sin ningún valor predeterminado.

[ @article = ] N'article'

Nombre del artículo. El nombre debe ser único en la publicación. @article es sysname, sin ningún valor predeterminado. @article debe estar en el equipo local que ejecuta SQL Server y debe cumplir las reglas de los identificadores.

[ @source_object = ] N'source_object'

Objeto de base de datos que se va a publicar. @source_object es sysname, sin ningún valor predeterminado. Para obtener más información sobre los tipos de objetos que se pueden publicar mediante la replicación de mezcla, vea Publicar datos y objetos de base de datos.

[ @type = ] N'type'

Tipo de artículo. @type es sysname, con un valor predeterminado de tabley puede ser uno de los siguientes valores.

Valor Descripción
table (valor predeterminado) Tabla con esquema y datos. La replicación supervisa la tabla para determinar los datos que se van a replicar.
func schema only Función con solo esquema.
indexed view schema only Vista indizada con solo esquema.
proc schema only Procedimiento almacenado con solo esquema.
synonym schema only Sinónimo con solo esquema.
view schema only Vista con solo esquema.

[ @description = ] N'description'

Descripción del artículo. @description es nvarchar(255), con un valor predeterminado de NULL.

[ @column_tracking = ] N'column_tracking'

Configuración del seguimiento de nivel de columna. @column_tracking es nvarchar(10), con un valor predeterminado de false. false activa el seguimiento de columnas. false desactiva el seguimiento de columnas y deja la detección de conflictos en el nivel de fila. Si la tabla ya está publicada en otras publicaciones de combinación, debe utilizar el mismo valor de seguimiento por columna que utilizan los artículos existentes basados en esta tabla. Este parámetro es específico solamente de los artículos de tabla.

Nota:

Si se utiliza el seguimiento por fila en la detección de conflictos (valor predeterminado), la tabla base puede incluir un máximo de 1024 columnas, pero en el artículo deben filtrarse las columnas de forma que se publique un máximo de 246 columnas. Si se utiliza el seguimiento por columna, la tabla base puede incluir 246 columnas como máximo.

[ @status = ] N'status'

Estado del artículo. @status es nvarchar(10), con un valor predeterminado de unsynced. Si activees , se ejecuta el script de procesamiento inicial para publicar la tabla. Si unsyncedes , el script de procesamiento inicial para publicar la tabla se ejecuta la próxima vez que se ejecute el Agente de instantáneas.

[ @pre_creation_cmd = ] N'pre_creation_cmd'

Especifica qué debe hacer el sistema si la tabla existe en el suscriptor al aplicar la instantánea. @pre_creation_cmd es nvarchar(10) y puede ser uno de los siguientes valores.

Valor Descripción
none Si la tabla ya existe en el suscriptor, no se lleva a cabo ninguna acción.
delete Emite una eliminación basada en la cláusula WHERE del filtro de subconjunto.
drop (valor predeterminado) Quita la tabla antes de volver a crearla. Necesario para admitir suscriptores de SQL Server Compact.
truncate Trunca la tabla de destino.

[ @creation_script = ] N'creation_script'

Ruta de acceso y nombre de un script de esquema de artículo opcional que se usa para crear el artículo en la base de datos de suscripciones. @creation_script es nvarchar(255), con un valor predeterminado de NULL.

Nota:

Los scripts de creación no se ejecutan en suscriptores de SQL Server Compact.

[ @schema_option = ] schema_option

Mapa de bits de la opción de generación de esquemas para el artículo especificado. @schema_option es varbinary(8)y puede ser | (OR bit a bit) producto de uno o varios de estos valores.

Valor Descripción
0x00 Deshabilita el scripting mediante el Agente de instantáneas y usa el script de precreación de esquema proporcionado definido en @creation_script.
0x01 Genera la creación del objeto (CREATE TABLE, CREATE PROCEDURE, etc.). Este es el valor predeterminado en los artículos de procedimientos almacenados.
0x10 Genera el índice clúster correspondiente. Incluso si no se establece esta opción, se generan índices relacionados con las restricciones y UNIQUE las claves principales si ya están definidos en una tabla publicada.
0x20 Convierte los tipos de datos definidos por el usuario (UDT) en tipos de datos base en el suscriptor. Esta opción no se puede usar cuando hay una restricción CHECK o DEFAULT en una columna UDT, si una columna UDT forma parte de la clave principal o si una columna calculada hace referencia a una columna UDT.
0x40 Genera los índices no clúster correspondientes. Incluso si no se establece esta opción, se generan índices relacionados con las restricciones y UNIQUE las claves principales si ya están definidos en una tabla publicada.
0x80 PRIMARY KEY Replica las restricciones. Los índices relacionados con la restricción también se replican, incluso si las opciones 0x10 y 0x40 no están habilitadas.
0x100 Replica los desencadenadores de usuario en un artículo de tabla, si se han definido.
0x200 FOREIGN KEY Replica las restricciones. Si la tabla a la que se hace referencia no forma parte de una publicación, no se replican todas las FOREIGN KEY restricciones de una tabla publicada.
0x400 CHECK Replica las restricciones.
0x800 Replica los valores predeterminados.
0x1000 Replica la intercalación de columna.
0x2000 Replica las propiedades extendidas asociadas con el objeto de origen del artículo publicado.
0x4000 UNIQUE Replica las restricciones. Los índices relacionados con la restricción también se replican, incluso si las opciones 0x10 y 0x40 no están habilitadas.
0x8000 Esta opción no es válida para los publicadores que ejecutan SQL Server 2005 (9.x) y versiones posteriores.
0x10000 CHECK Replica las restricciones para NOT FOR REPLICATION que las restricciones no se apliquen durante la sincronización.
0x20000 FOREIGN KEY Replica las restricciones para NOT FOR REPLICATION que las restricciones no se apliquen durante la sincronización.
0x40000 Replica grupos de archivos asociados con un índice o una tabla con particiones.
0x80000 Replica el esquema de partición de una tabla con particiones.
0x100000 Replica el esquema de partición de un índice con particiones.
0x200000 Replica las estadísticas de tabla.
0x400000 Replica los enlaces predeterminados.
0x800000 Replica los enlaces de regla.
0x1000000 Replica el índice de texto completo.
0x2000000 Las colecciones de esquemas XML enlazadas a columnas xml no se replican.
0x4000000 Replica índices en columnas xml .
0x8000000 Crea los esquemas que aún no están presentes en el suscriptor.
0x10000000 Convierte columnas xml en ntext en el suscriptor.
0x20000000 Convierte tipos de datos de objetos grandes (nvarchar(max), varchar(max)y varbinary(max)) introducidos en SQL Server 2005 (9.x) en tipos de datos compatibles con SQL Server 2000 (8.x).
0x40000000 Replica permisos.
0x80000000 Intenta quitar dependencias a cualquier objeto que no forme parte de la publicación.
0x100000000 Use esta opción para replicar el FILESTREAM atributo si se especifica en columnas varbinary(max). No especifique esta opción si va a replicar tablas en suscriptores de SQL Server 2005 (9.x). No se admite la replicación de tablas que tienen columnas FILESTREAM en suscriptores de SQL Server 2000 (8.x), independientemente de cómo se establezca esta opción de esquema. Consulte la opción 0x800000000relacionada .
0x200000000 Convierte los tipos de datos de fecha y hora (fecha, hora, datetimeoffset y datetime2) introducidos en SQL Server 2008 (10.0.x) en tipos de datos compatibles con versiones anteriores de SQL Server.
0x400000000 Replica la opción de compresión para los datos y los índices. Para obtener más información, consulte Compresión de datos.
0x800000000 Establezca esta opción para almacenar los datos de FILESTREAM en su propio grupo de archivos en el suscriptor. Si no se establece esta opción, los datos FILESTREAM se almacenan en el grupo de archivos predeterminado. La replicación no crea grupos de archivos; Por lo tanto, si establece esta opción, debe crear el grupo de archivos antes de aplicar la instantánea en el suscriptor. Para obtener más información sobre cómo crear objetos antes de aplicar la instantánea, vea Ejecutar scripts antes y después de aplicar la instantánea.

Consulte la opción 0x100000000relacionada .
0x1000000000 Convierte los tipos definidos por el usuario (UDT) de Common Language Runtime (CLR) en varbinary(max) para que las columnas de tipo UDT se puedan replicar en suscriptores que ejecutan SQL Server 2005 (9.x).
0x2000000000 Convierte el tipo de datos hierarchyid en varbinary(max) para que las columnas de tipo hierarchyid se puedan replicar en suscriptores que ejecutan SQL Server 2005 (9.x). Para obtener más información sobre cómo usar columnas hierarchyid en tablas replicadas, consulte referencia de método de tipo de datos hierarchyid.
0x4000000000 Replica los índices filtrados de la tabla. Para obtener más información sobre los índices filtrados, vea Crear índices filtrados.
0x8000000000 Convierte los tipos de datos geography y geometry en varbinary(max) para que las columnas de estos tipos se puedan replicar en suscriptores que ejecutan SQL Server 2005 (9.x).
0x10000000000 Replica índices en columnas de tipo geography y geometry.

Si este valor es NULL, el sistema genera automáticamente una opción de esquema válida para el artículo. En la tabla de opciones Esquema predeterminado se muestra el valor elegido en función del tipo de artículo. Además, no todos los valores de @schema_option son válidos para cada tipo de replicación y tipo de artículo. En la tabla de opciones Esquema válido se muestran las opciones que se pueden especificar para un tipo de artículo determinado.

Nota:

El parámetro @schema_option solo afecta a las opciones de replicación de la instantánea inicial. Una vez generado el esquema inicial por el Agente de instantáneas y aplicado en el suscriptor, la replicación del esquema de publicación cambia al suscriptor en función de las reglas de replicación de cambios de esquema y la configuración de parámetro @replicate_ddl especificada en sp_addmergepublication. Para más información, vea Realizar cambios de esquema en bases de datos de publicaciones.

[ @subset_filterclause = ] N'subset_filterclause'

Cláusula WHERE que especifica el filtrado horizontal de un artículo de tabla sin la palabra WHERE incluida. @subset_filterclause es nvarchar(1000) con un valor predeterminado de una cadena vacía.

Importante

Por motivos de rendimiento, se recomienda no aplicar funciones a nombres de columna en cláusulas de filtro de fila con parámetros, como LEFT([MyColumn]) = SUSER_SNAME(). Si usa HOST_NAME en una cláusula de filtro e invalida el HOST_NAME valor, es posible que tenga que convertir tipos de datos mediante CONVERT. Para obtener más información sobre los procedimientos recomendados para este caso, vea la sección "Invalidar el valor de HOST_NAME() en Filtros con parámetros: filtros de fila con parámetros.

[ @article_resolver = ] N'article_resolver'

Solucionador basado en COM que se usa para resolver conflictos en el artículo de tabla o el ensamblado de .NET Framework invocado para ejecutar lógica de negocios personalizada en el artículo de tabla. @article_resolver es nvarchar(255), con un valor predeterminado de NULL. Los valores disponibles para este parámetro se enumeran en Solucionadores personalizados de Microsoft. Si el valor proporcionado no es uno de los solucionadores de Microsoft, SQL Server usa el solucionador especificado en lugar del solucionador proporcionado por el sistema. Use sp_enumcustomresolvers para enumerar la lista de solucionadores personalizados disponibles. Para obtener más información, vea Ejecutar lógica de negocios durante la sincronización de mezcla y replicación de mezcla avanzada: detección y resolución de conflictos.

[ @resolver_info = ] N'resolver_info'

Se usa para especificar información adicional requerida por un solucionador personalizado. Algunos de los solucionadores de Microsoft requieren una columna proporcionada como entrada para el solucionador. @resolver_info es nvarchar(517), con un valor predeterminado de NULL. Para obtener más información, vea Conflictos de replicación de mezcla avanzada: solucionadores basados en COM.

[ @source_owner = ] N'source_owner'

Nombre del propietario del @source_object. @source_owner es sysname, con un valor predeterminado de NULL. Si NULLes , se supone que el usuario actual es el propietario.

[ @destination_owner = ] N'destination_owner'

Propietario del objeto en la base de datos de suscripciones, si no dboes . @destination_owner es sysname, con un valor predeterminado de NULL. Si NULLes , dbo se supone que es el propietario.

[ @vertical_partition = ] N'vertical_partition'

Habilita y deshabilita el filtrado de columnas en un artículo de tabla. @vertical_partition es nvarchar(5), con un valor predeterminado de false.

  • false indica que no hay ningún filtrado vertical y publica todas las columnas.

  • false borra todas las columnas excepto la clave principal declarada y ROWGUID las columnas. Las columnas se agregan mediante sp_mergearticlecolumn.

[ @auto_identity_range = ] N'auto_identity_range'

Habilita y deshabilita el control automático de intervalos de identidad para este artículo de tabla en una publicación en el momento en que se crea. @auto_identity_range es nvarchar(5), con un valor predeterminado de NULL. false habilita el control automático del intervalo de identidades, mientras false lo deshabilita.

Nota:

Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts. Debe usar @identityrangemanagementoption para especificar las opciones de administración del intervalo de identidades. Para más información, vea Replicar columnas de identidad.

[ @pub_identity_range = ] pub_identity_range

Controla el tamaño del intervalo de identidad asignado a un suscriptor con una suscripción de servidor cuando se utiliza la administración automática de intervalos de identidad. Este rango de identidad se reserva para que un suscriptor de republicación pueda realizar asignaciones a sus propios suscriptores. @pub_identity_range es bigint, con un valor predeterminado de NULL. Debe especificar este parámetro si @identityrangemanagementoption es auto o si @auto_identity_range es false.

[ @identity_range = ] identity_range

Controla el tamaño del rango de identidad asignado al publicador y al suscriptor cuando se utiliza el control automático de rangos de identidad. @identity_range es bigint, con un valor predeterminado de NULL. Debe especificar este parámetro si @identityrangemanagementoption es auto o si @auto_identity_range es false.

Nota:

@identity_range controla el tamaño del intervalo de identidad al volver a publicar suscriptores mediante versiones anteriores de SQL Server.

[ @threshold = ] umbral

Valor de porcentaje que controla cuándo el Agente de mezcla asigna un nuevo intervalo de identidad. Cuando se usa el porcentaje de valores especificados en @threshold, el Agente de mezcla crea un nuevo intervalo de identidades. @threshold es int, con un valor predeterminado de NULL. Debe especificar este parámetro si @identityrangemanagementoption es auto o si @auto_identity_range es false.

[ @verify_resolver_signature = ] verify_resolver_signature

Especifica si una firma digital se comprueba antes de utilizar un solucionador en la replicación de mezcla. @verify_resolver_signature es int, con un valor predeterminado de 1.

  • 0 especifica que la firma no se comprueba.

  • 1 especifica que la firma se comprueba para ver si procede de un origen de confianza.

[ @destination_object = ] N'destination_object'

Nombre del objeto en la base de datos de suscripciones. @destination_object es sysname, con un valor predeterminado de lo que está en @source_object. Este parámetro se puede especificar únicamente si el artículo es de solo esquema, como procedimientos almacenados, vistas y UDF. Si el artículo especificado es un artículo de tabla, el valor de @source_object invalida el valor de @destination_object.

[ @allow_interactive_resolver = ] N'allow_interactive_resolver'

Habilita o deshabilita el uso del solucionador interactivo en un artículo. @allow_interactive_resolver es nvarchar(5), con un valor predeterminado de false. false habilita el uso del Solucionador interactivo en el artículo; false la deshabilita.

Nota:

Los suscriptores de SQL Server Compact no admiten la resolución interactiva.

[ @fast_multicol_updateproc = ] N'fast_multicol_updateproc'

Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts.

[ @check_permissions = ] check_permissions

Mapa de bits de los permisos de nivel de tabla que se comprueban cuando el Agente de mezcla aplica cambios al publicador. Si la cuenta de inicio de sesión o usuario del publicador usada por el proceso de combinación no tiene los permisos de tabla correctos, los cambios no válidos se registran como conflictos. @check_permissions es int y puede ser | (OR bit a bit) producto de uno o varios de los valores siguientes.

Valor Descripción
0x00 (valor predeterminado) No se comprueban los permisos.
0x10 Comprueba los permisos en el publicador antes de cargar las operaciones de inserción creadas en un suscriptor.
0x20 Comprueba los permisos en el publicador antes de cargar las operaciones de actualización creadas en un suscriptor.
0x40 Comprueba los permisos en el publicador antes de cargar las operaciones de eliminación creadas en un suscriptor.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Confirma que la acción realizada por este procedimiento almacenado podría invalidar una instantánea existente. @force_invalidate_snapshot es bit, con un valor predeterminado de 0.

  • 0 especifica que agregar un artículo no hace que la instantánea no sea válida. Si el procedimiento almacenado detecta que el cambio requiere una nueva instantánea, se producirá un error y no se realizarán cambios.

  • 1 especifica que agregar un artículo podría hacer que la instantánea no sea válida y, si hay suscripciones existentes que requieren una nueva instantánea, concede permiso para que la instantánea existente se marque como obsoleta y se genere una nueva instantánea. @force_invalidate_snapshot se establece en 1 al agregar un artículo a una publicación con una instantánea existente.

[ @published_in_tran_pub = ] N'published_in_tran_pub'

Indica que un artículo de una publicación de combinación también se publica en una publicación transaccional. @published_in_tran_pub es nvarchar(5), con un valor predeterminado de false. false especifica que el artículo también se publica en una publicación transaccional.

[ @force_reinit_subscription = ] force_reinit_subscription

Confirma que la acción realizada por este procedimiento almacenado puede requerir la reinicialización de las suscripciones existentes. @force_reinit_subscription es bit, con un valor predeterminado de 0.

  • 0 especifica que agregar un artículo no hace que se reinicialice la suscripción. Si el procedimiento almacenado detecta que el cambio requiere que se reinicialicen las suscripciones existentes, se produce un error y no se realizan cambios.

  • 1 significa que los cambios realizados en el artículo de combinación hacen que se reinicialicen las suscripciones existentes y se concede permiso para que se produzca la reinicialización de la suscripción. @force_reinit_subscription se establece 1 en cuando @subset_filterclause especifica un filtro de fila con parámetros.

[ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection'

Especifica el nivel de detección de conflictos para un artículo que es un miembro de un registro lógico. @logical_record_level_conflict_detection es nvarchar(5), con un valor predeterminado de false.

  • false especifica que se detecta un conflicto si se realizan cambios en cualquier parte del registro lógico.

  • false especifica que la detección de conflictos predeterminada se usa según lo especificado por @column_tracking. Para más información, vea Agrupar cambios en filas relacionadas con registros lógicos.

Nota:

Dado que los suscriptores de SQL Server Compact no admiten registros lógicos, debe especificar un valor de false para que @logical_record_level_conflict_detection admita estos suscriptores.

[ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution'

Especifica el nivel de resolución de conflictos para un artículo que es un miembro de un registro lógico. @logical_record_level_conflict_resolution es nvarchar(5), con un valor predeterminado de false.

  • false especifica que todo el registro lógico ganador sobrescribe el registro lógico que pierde.

  • false especifica que las filas ganadoras no están restringidas al registro lógico.

Si @logical_record_level_conflict_detection es false, @logical_record_level_conflict_resolution también debe establecerse falseen . Para más información, vea Agrupar cambios en filas relacionadas con registros lógicos.

Nota:

Dado que los suscriptores de SQL Server Compact no admiten registros lógicos, debe especificar un valor de false para que @logical_record_level_conflict_resolution admita estos suscriptores.

[ @partition_options = ] partition_options

Define el modo en el que se realiza la partición de los datos en el artículo, lo que permite optimizaciones de rendimiento cuando todas las filas pertenecen solamente a una partición o solamente a una suscripción. @partition_options es tinyint y puede ser uno de los siguientes valores.

Valor Descripción
0 (valor predeterminado) El filtrado del artículo es estático o no produce un subconjunto único de datos para cada partición, es decir, una partición "superpuesta".
1 Las particiones se superponen y las actualizaciones del lenguaje de manipulación de datos (DML) realizadas en el suscriptor no pueden cambiar la partición a la que pertenece una fila.
2 El filtro para el artículo produce particiones no superpuestas, pero varios suscriptores pueden recibir la misma partición.
3 El filtro para el artículo produce particiones no superpuestas que son exclusivas para cada suscripción.

Nota:

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

[ @processing_order = ] processing_order

Indica el orden de procesamiento de los artículos en una publicación de mezcla. @processing_order es int, con un valor predeterminado de 0. 0 especifica que el artículo no está ordenado y cualquier otro valor representa el valor ordinal del orden de procesamiento de este artículo. Los artículos se procesan en orden desde el valor menor al mayor. Si dos artículos tienen el mismo valor, el orden de procesamiento viene determinado por el orden del alias del artículo en la tabla del sistema sysmergearticles . Para más información, vea Specify merge replication properties (Especificación de propiedades de replicación de mezcla).

[ @subscriber_upload_options = ] subscriber_upload_options

Define las restricciones en actualizaciones realizadas en el suscriptor con una suscripción de cliente. Para más información, vea Optimizar el rendimiento de la replicación de mezcla con artículos de solo descarga. @subscriber_upload_options es tinyint y puede ser uno de los siguientes valores.

Valor Descripción
0 (valor predeterminado) Sin restricciones. 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 Los cambios no se permiten en el suscriptor.

Cambiar @subscriber_upload_options requiere que la suscripción se reinicialice llamando a sp_reinitmergepullsubscription.

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.

[ @identityrangemanagementoption = ] N'identityrangemanagementoption'

Especifica cómo se controla el rango de identidad para el artículo. @identityrangemanagementoption es nvarchar(10) y puede ser uno de los siguientes valores.

Valor Descripción
none Deshabilita la administración de intervalos de identidad.
manual Marca la columna de identidad utilizando NOT FOR REPLICATION para habilitar la administración manual de intervalos de identidad.
auto Especifica la administración automática de intervalos de identidad.
NULL (valor predeterminado) El valor predeterminado es none cuando el valor de @auto_identity_range no truees .

Para la compatibilidad con versiones anteriores, cuando el valor de @identityrangemanagementoption es NULL, se comprueba el valor de @auto_identity_range . Sin embargo, cuando el valor de @identityrangemanagementoption no NULLes , se omite el valor de @auto_identity_range . Para más información, vea Replicar columnas de identidad.

[ @delete_tracking = ] N'delete_tracking'

Indica si se replican las eliminaciones. @delete_tracking es nvarchar(5), con un valor predeterminado de true. false indica que las eliminaciones no se replican e true indica que se replican las eliminaciones, que es el comportamiento habitual para la replicación de mezcla. Cuando @delete_tracking se establece falseen , las filas eliminadas en el suscriptor deben quitarse manualmente en el publicador y las filas eliminadas en el publicador deben quitarse manualmente en el suscriptor.

Importante

Establecer @delete_tracking para dar lugar a false una no convergencia. 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.

Nota:

@delete_tracking opciones no se pueden establecer mediante el Asistente para nueva publicación ni el cuadro de diálogo Propiedades de la publicación.

[ @compensate_for_errors = ] N'compensate_for_errors'

Indica si se llevan a cabo acciones de compensación cuando se producen errores durante la sincronización. @compensate_for_errors es nvarchar(5), con un valor predeterminado de false. Cuando se establece trueen , los cambios que no se pueden aplicar en un suscriptor o publicador durante la sincronización siempre conducen a acciones de compensación para deshacer el cambio; sin embargo, un suscriptor configurado incorrectamente que genera un error puede provocar cambios en otros suscriptores y publicadores para deshacerse. false deshabilita estas acciones de compensación; sin embargo, los errores se siguen registrando como con la compensación y las combinaciones posteriores continúan intentando aplicar los cambios hasta que se realicen correctamente.

Importante

Aunque parezca que los datos de las filas afectadas no tengan convergencia, en cuanto trate los errores, se podrán aplicar los cambios y los datos convergerán. Si la tabla de origen de un artículo ya está publicada en otra publicación, el valor de @compensate_for_errors debe ser el mismo para ambos artículos.

[ @stream_blob_columns = ] N'stream_blob_columns'

Especifica que se utilice una optimización del flujo de datos al replicar columnas de objetos grandes binarios. @stream_blob_columns es nvarchar(5), con un valor predeterminado de false. true significa que se intentará la optimización. @stream_blob_columns se establece en true cuando FILESTREAM está habilitado. Esto permite que la replicación de datos FILESTREAM se realice de forma óptima y que se reduzca el uso de memoria. Para forzar que los artículos de tabla FILESTREAM no usen streaming de blobs, use sp_changemergearticle para establecer @stream_blob_columns en false.

Importante

Habilitar esta optimización de memoria puede reducir el rendimiento de la Agente de mezcla durante la sincronización. Esta opción solo se debe utilizar al replicar columnas que contienen megabytes de datos.

Nota:

Ciertas funcionalidades de replicación de mezcla, como los registros lógicos, pueden impedir que se use la optimización del flujo al replicar objetos binarios grandes incluso con @stream_blob_columns establecido en true.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

sp_addmergearticle se usa en la replicación de mezcla.

Al publicar objetos, sus definiciones se copian en los suscriptores. Si va a publicar un objeto de base de datos que depende de uno o más objetos, debe publicar todos los objetos a los que se hace referencia. Por ejemplo, si publica una vista que depende de una tabla, también debe publicar la tabla.

Si especifica un valor de 3 para @partition_options:

  • Solo puede haber una sola suscripción para cada partición de datos de ese artículo. Si se crea una segunda partición en la que el criterio de filtrado de la nueva suscripción se resuelve en la misma partición que la suscripción existente, se quitará la suscripción existente.

  • Los metadatos se limpian cada vez que se ejecuta el Agente de mezcla y la instantánea con particiones expira más rápidamente. Al utilizar esta opción, debe considerar la habilitación de la instantánea con particiones solicitada por el suscriptor. Para más información, consulte Crear una instantánea para una publicación de mezcla con filtros con parámetros.

Si agrega un artículo con un filtro horizontal estático, mediante @subset_filterclause, a una publicación existente con artículos que tienen filtros parametrizados, se deben reinicializar las suscripciones.

Al especificar @processing_order, se recomienda dejar huecos entre los valores de orden de artículo, lo que facilita el establecimiento de nuevos valores en el futuro. Por ejemplo, si tiene tres artículos, , y , establezca @processing_order en 10, 20y 30, en lugar 1de , 2y 3.Article3Article2Article1 Para más información, vea Specify merge replication properties (Especificación de propiedades de replicación de mezcla).

Tabla de opciones de esquema predeterminada

En esta tabla se describe el valor predeterminado que establece el procedimiento almacenado, si se especifica un NULL valor para @schema_option, que depende del tipo de artículo.

Tipo de artículo Valor de la opción de esquema
func schema only 0x01
indexed view schema only 0x01
proc schema only 0x01
table 0x0C034FD1 - Publicaciones compatibles con SQL Server 2005 (9.x) y versiones posteriores con una instantánea en modo nativo.

0x08034FF1 - PUBLICACIONES compatibles con SQL Server 2005 (9.x) y versiones posteriores con una instantánea del modo de caracteres.
view schema only 0x01

Nota:

Si la publicación admite versiones anteriores de SQL Server, la opción de esquema predeterminada para table es 0x30034FF1.

Tabla de opciones de esquema válida

En la tabla siguiente se describen los valores permitidos @schema_option en función del tipo de artículo.

Tipo de artículo Valores de las opciones de esquema
func schema only 0x01 y 0x2000
indexed view schema only 0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x1000000, y 0x200000
proc schema only 0x01 y 0x2000
table Todas las opciones.
view schema only 0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x1000000, y 0x200000

Ejemplos

DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @table1 = N'Employee'; 
SET @table2 = N'SalesOrderHeader'; 
SET @table3 = N'SalesOrderDetail'; 
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';

-- Add a filtered article for the Employee table.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table1, 
  @source_object = @table1, 
  @type = N'table', 
  @source_owner = @hrschema,
  @schema_option = 0x0004CF1,
  @description = N'article for the Employee table',
  @subset_filterclause = @filterclause;

-- Add an article for the SalesOrderHeader table that is filtered
-- based on Employee and horizontally filtered.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table2, 
  @source_object = @table2, 
  @type = N'table', 
  @source_owner = @salesschema, 
  @vertical_partition = N'true',
  @schema_option = 0x0034EF1,
  @description = N'article for the SalesOrderDetail table';

-- Add an article for the SalesOrderDetail table that is filtered
-- based on SaledOrderHeader.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table3, 
  @source_object = @table3, 
  @source_owner = @salesschema,
  @description = 'article for the SalesOrderHeader table', 
  @identityrangemanagementoption = N'auto', 
  @pub_identity_range = 100000, 
  @identity_range = 100, 
  @threshold = 80,
  @schema_option = 0x0004EF1;

-- Add all columns to the SalesOrderHeader article.
EXEC sp_mergearticlecolumn 
  @publication = @publication, 
  @article = @table2, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Remove the credit card Approval Code column.
EXEC sp_mergearticlecolumn 
  @publication = @publication, 
  @article = @table2, 
  @column = N'CreditCardApprovalCode', 
  @operation = N'drop', 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Add a merge join filter between Employee and SalesOrderHeader.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table2, 
  @filtername = N'SalesOrderHeader_Employee', 
  @join_articlename = @table1, 
  @join_filterclause = N'Employee.BusinessEntityID = SalesOrderHeader.SalesPersonID', 
  @join_unique_key = 1, 
  @filter_type = 1, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Add a merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table3, 
  @filtername = N'SalesOrderDetail_SalesOrderHeader', 
  @join_articlename = @table2, 
  @join_filterclause = N'SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID', 
  @join_unique_key = 1, 
  @filter_type = 1, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;
GO

Permisos

Debe pertenecer al rol fijo de servidor sysadmin o al rol fijo de base de datos db_owner .