sp_addmergearticle (Transact-SQL)

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 publicaciones.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • [ @publication= ] 'publication'
    Es el nombre de la publicación que contiene el artículo. publication es de tipo sysname y no tiene ningún valor predeterminado.

  • [ @article= ] 'article'
    Es el nombre del artículo. El nombre debe ser único en la publicación. article es de tipo sysname y no tiene ningún valor predeterminado. article debe residir en el equipo local que ejecuta Microsoft SQL Server y debe cumplir las reglas de sintaxis de identificadores.

  • [ @source_object= ] 'source_object'
    Es el objeto de base de datos que se va a publicar. source_object es de tipo sysname y no tiene 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= ] 'type'
    Es el tipo de artículo. type es de tipo sysname, su valor predeterminado es table y puede tener uno de los valores siguientes.

    Valor

    Descripción

    table (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.

    vista indizadasolo esquema

    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= ] 'description'
    Descripción del artículo. description es de tipo nvarchar(255) y su valor predeterminado es NULL.

  • [ @column_tracking= ] 'column_tracking'
    Es la configuración del seguimiento por columna. column_tracking es de tipo nvarchar(10) y su valor predeterminado es FALSE. trueactiva el seguimiento por columna. false desactiva el seguimiento por columna 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. Para obtener más información acerca del nivel de seguimiento, vea la sección sobre el nivel de seguimiento en el tema Cómo la replicación de mezcla detecta y resuelve conflictos.

  • [ @status= ] 'status'
    Es el estado del artículo. status es de tipo nvarchar(10) y su valor predeterminado es unsynced. Si es active, se ejecuta el script inicial de proceso para publicar la tabla. Si es unsynced, el script inicial de proceso para publicar la tabla se ejecuta la próxima vez que se ejecuta el Agente de instantáneas.

  • [ @pre_creation_cmd= ] 'pre_creation_cmd'
    Especifica lo que debe hacer el sistema si la tabla existe en el suscriptor cuando se aplica la instantánea. pre_creation_cmd es de tipo nvarchar(10) y puede tener uno de los valores siguientes.

    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 (predeterminado)

    Quita la tabla antes de volver a crearla. Requerido para admitir suscriptores de Microsoft SQL Server Compact 3.5 SP2.

    truncate

    Trunca la tabla de destino.

  • [ @creation_script= ] 'creation_script'
    Es la ruta de acceso y el nombre de un script de esquema de artículo opcional utilizado para crear el artículo en la base de datos de suscripciones. creation_script es de tipo nvarchar(255) y su valor predeterminado es NULL.

    Nota

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

  • [ @schema_option= ] schema_option
    Es una máscara de bits de la opción de generación de esquema para el artículo especificado. schema_option es de tipo binary(8) y puede ser el producto de | (OR bit a bit) de uno o varios de los valores siguientes.

    Valor

    Descripción

    0x00

    Deshabilita el scripting del Agente de instantáneas y utiliza el script de creación previa de esquema definido en creation_script.

    0x01

    Genera la creación del objeto (CREATE TABLE, CREATE PROCEDURE, etc.). Éste es el valor predeterminado en los artículos de procedimientos almacenados.

    0x10

    Genera el índice clúster correspondiente. Aunque esta opción no esté establecida, se generarán índices relacionados con claves principales y restricciones UNIQUE 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 utilizar si existe 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. Aunque esta opción no esté establecida, se generarán índices relacionados con claves principales y restricciones UNIQUE si ya están definidos en una tabla publicada.

    0x80

    Replica las restricciones PRIMARY KEY. También se replican los índices relacionados con la restricción, aunque no estén habilitadas las opciones 0x10 y 0x40.

    0x100

    Replica los desencadenadores de usuario en un artículo de tabla, si se han definido.

    0x200

    Replica restricciones FOREIGN KEY. Si la tabla a la que se hace referencia no forma parte de una publicación, no se replica ninguna restricción FOREIGN KEY en una tabla publicada.

    0x400

    Replica las restricciones CHECK.

    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

    Replica las restricciones UNIQUE. También se replican los índices relacionados con la restricción, aunque no estén habilitadas las opciones 0x10 y 0x40.

    0x8000

    Esta opción no es válida para publicadores que ejecutan SQL Server 2005 o versiones posteriores.

    0x10000

    Replica las restricciones CHECK como NOT FOR REPLICATION de manera que no se impongan durante la sincronización.

    0x20000

    Replica las restricciones FOREIGN KEY como NOT FOR REPLICATION de manera que no se impongan 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 reglas.

    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 esquemas que aún no existen en el suscriptor.

    0x10000000

    Convierte columnas xml a ntext en el suscriptor.

    0x20000000

    Convierte los tipos de datos de objetos grandes (nvarchar(max), varchar(max) y varbinary(max)) introducidos en SQL Server 2005 en tipos de datos admitidos en SQL Server 2000. Para obtener información sobre cómo se asignan estos tipos, vea la sección "Asignar nuevos tipos de datos para versiones anteriores" en Usar varias versiones de SQL Server en una topología de replicación.

    0x40000000

    Replica permisos.

    0x80000000

    Intenta quitar dependencias a objetos que no forman parte de la publicación.

    0x100000000

    Use esta opción para replicar el atributo FILESTREAM si se especifica en columnas varbinary(max). No especifique esta opción si replica tablas en suscriptores de SQL Server 2005. La replicación de tablas que incluyen columnas FILESTREAM en suscriptores de SQL Server 2000 no se admite, independientemente de la configuración de esta opción de esquema. Vea la opción relacionada 0x800000000.

    0x200000000

    Convierte los tipos de datos de fecha y hora (date, time, datetimeoffset y datetime2) introducidos en SQL Server 2008 en tipos de datos admitidos en versiones anteriores de SQL Server. Para obtener información sobre cómo se asignan estos tipos, vea la sección sobre asignación de los nuevos tipos de datos en versiones anteriores de Usar varias versiones de SQL Server en una topología de replicación.

    0x400000000

    Replica la opción de compresión para los datos y los índices. Para obtener más información, vea Crear tablas e índices comprimidos.

    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 de FILESTREAM se almacenan en el grupo de archivos predeterminado. La replicación no crea grupos de archivos; por 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.

    Vea la opción relacionada 0x100000000.

    0x1000000000

    Convierte 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.

    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. Para obtener más información sobre cómo usar columnas hierarchyid en tablas replicadas, vea hierarchyid (Transact-SQL).

    0x4000000000

    Replica los índices filtrados de la tabla. Para obtener más información sobre los índices filtrados, vea Directrices generales para diseñar í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.

    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. La tabla Opciones de esquema predeterminadas de la sección Notas muestra el valor elegido según el tipo de artículo. No todos los valores de schema_option son válidos para todos los tipos de replicación y de artículo. La tabla Opciones de esquema válidas de la sección Notas muestra las opciones que se pueden especificar en un tipo de artículo determinado.

    Nota

    El parámetro schema_option solamente afecta a las opciones de replicación de la instantánea inicial. Cuando el Agente de instantáneas ha generado el esquema inicial y lo ha aplicado en el suscriptor, la replicación de cambios del esquema de publicación en el suscriptor se produce según las reglas de replicación de cambios del esquema y el valor del parámetro replicate_ddl especificado en sp_addmergepublication. Para obtener más información, vea Realizar cambios de esquema en las bases de datos de publicación.

  • [ @subset_filterclause= ] 'subset_filterclause'
    Es una cláusula WHERE que especifica el filtro horizontal de un artículo de tabla sin incluir la palabra WHERE. subset_filterclause es de tipo nvarchar(1000) y su valor predeterminado es una cadena vacía.

    Nota importanteImportante

    Por motivos de rendimiento, se recomienda que no aplique funciones a nombres de columnas en las cláusulas de los filtros de fila con parámetros, como LEFT([MyColumn]) = SUSER_SNAME(). Si utiliza HOST_NAME en una cláusula de filtro y reemplaza el valor de HOST_NAME, puede que sea necesario convertir los tipos de datos mediante CONVERT. Para obtener más información acerca de las prácticas recomendadas para este caso, vea la sección sobre cómo reemplazar el valor de HOST_NAME() en Filtros de fila con parámetros.

  • [ @article_resolver= ] 'article_resolver'
    Es el solucionador basado en COM utilizado para solucionar conflictos en el artículo de tabla o en el ensamblado .NET Framework invocado para ejecutar lógica de negocios personalizada en el artículo de tabla. article_resolver es de tipo varchar(255) y su valor predeterminado es NULL. Los valores disponibles para este parámetro se enumeran en los solucionadores personalizados de Microsoft. Si el valor proporcionado no es uno de los solucionadores de Microsoft, SQL Server utiliza el solucionador especificado en lugar del solucionador proporcionado por el sistema. Utilice sp_enumcustomresolvers para enumerar la lista de solucionadores personalizados disponibles. Para obtener más información, vea Ejecutar la lógica de negocios durante la sincronización de mezcla y Detección y resolución de conflictos de replicación de mezcla avanzada.

  • [ @resolver_info= ] 'resolver_info'
    Se utiliza para especificar información adicional necesaria para un solucionador personalizado. Algunos de los solucionadores de Microsoft requieren que se proporcione una columna como entrada para el solucionador. resolver_info es de tipo nvarchar(255) y su valor predeterminado es NULL. Para obtener más información, vea Resoluciones basadas en Microsoft COM.

  • [ @source_owner= ] 'source_owner'
    Es el nombre del propietario de source_object. source_owner es de tipo sysname y su valor predeterminado es NULL. Si es NULL, se presupone que el usuario actual es el propietario.

  • [ @destination_owner= ] 'destination_owner'
    Es el propietario del objeto de la base de datos de suscripciones, si no es 'dbo'. destination_owner es de tipo sysname y su valor predeterminado es NULL. Si es NULL, se presupone que el propietario es 'dbo'.

  • [ @vertical_partition= ] 'column_filter'
    Habilita y deshabilita el filtro de columnas en un artículo de tabla. vertical_partition es de tipo nvarchar(5) y su valor predeterminado es FALSE.

    false indica que no hay filtrado vertical y publica todas las columnas.

    true borra todas las columnas excepto las columnas de clave principal declarada y las columnas ROWGUID. Las columnas se agregan con sp_mergearticlecolumn.

  • [ @auto_identity_range= ] 'automatic_identity_range'
    Habilita y deshabilita la administración automática de intervalos de identidad de este artículo de tabla en una publicación en el momento de su creación. auto_identity_range es de tipo nvarchar(5) y su valor predeterminado es FALSE. true habilita la administración automática de intervalos de identidad y false la deshabilita.

    Nota

    auto_identity_range ya no se utiliza y se mantiene solamente por compatibilidad con versiones anteriores. Debe utilizar identityrangemanagementoption para especificar opciones de administración de intervalos de identidad. Para obtener 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 intervalo de identidad se reserva para que un suscriptor de republicación pueda realizar asignaciones a sus propios suscriptores. pub_identity_range es de tipo bigint y su valor predeterminado es NULL. Debe especificar este parámetro si identityrangemanagementoption es de tipo auto o si auto_identity_range es true.

  • [ @identity_range= ] identity_range
    Controla el tamaño del intervalo de identidad asignado al publicador y al suscriptor cuando se utiliza la administración automática de intervalos de identidad. identity_range es de tipo bigint y su valor predeterminado es NULL. Debe especificar este parámetro si identityrangemanagementoption es de tipo auto o si auto_identity_range es true.

    Nota

    identity_range controla el tamaño del intervalo de identidad en los suscriptores de republicación que utilizan versiones anteriores de SQL Server.

  • [ @threshold= ] threshold
    Valor de porcentaje que controla cuándo el Agente de mezcla asigna un nuevo intervalo de identidad. Cuando se utiliza el porcentaje de valores especificado en threshold, el Agente de mezcla crea un nuevo intervalo de identidad. threshold es de tipo int y su valor predeterminado es NULL. Debe especificar este parámetro si identityrangemanagementoption es de tipo auto o si auto_identity_range es true.

  • [ @verify_resolver_signature= ] verify_resolver_signature
    Especifica si en la replicación de mezcla se comprueba una firma digital antes de utilizar un solucionador. verify_resolver_signature es de tipo int y su valor predeterminado es 1.

    0 especifica que no se comprobará la firma.

    1 especifica que se comprobará la firma para ver si proviene de una fuente confiable.

  • [ @destination_object= ] 'destination_object'
    Es el nombre del objeto en la base de datos de suscripciones. destination_object es de tipo sysname y su valor predeterminado es el contenido de @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 reemplaza el valor de destination_object.

  • [ @allow_interactive_resolver= ] 'allow_interactive_resolver'
    Habilita o deshabilita el uso del Solucionador interactivo en un artículo. allow_interactive_resolver es de tipo nvarchar(5) y su valor predeterminado es FALSE. true habilita el uso del Solucionador interactivo en el artículo; false lo deshabilita.

    Nota

    El Solucionador interactivo no se admite en suscriptores de SQL Server Compact 3.5 SP2.

  • [ @fast_multicol_updateproc= ] 'fast_multicol_updateproc'
    Este parámetro ya no se utiliza y se mantiene solamente por compatibilidad con versiones anteriores de scripts.

  • [ @check_permissions= ] check_permissions
    Es un mapa de bits de los permisos de tabla que se comprueba cuando el Agente de mezcla aplica cambios en el publicador. Si la cuenta de inicio de sesión o usuario del publicador que utiliza el proceso de mezcla no dispone de los permisos de tabla correctos, los cambios no válidos se registran como conflictos. check_permissions es de tipo int y puede ser el producto de | (OR bit a bit) de uno o varios de los valores siguientes.

    Valor

    Descripción

    0x00 (predeterminado)

    Los permisos no se comprueban.

    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 puede invalidar una instantánea existente. force_invalidate_snapshot es de tipo bit y su valor predeterminado es 0.

    0 especifica que al agregar un artículo no se invalida la instantánea. 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, si se agrega un artículo, se puede invalidar la instantánea y, si hay suscripciones existentes que requieren una nueva instantánea, se concede permiso para marcar como obsoleta la instantánea existente y generar una nueva. force_invalidate_snapshot se establece en 1 cuando se agrega un artículo a una publicación con una instantánea existente.

  • [ @published_in_tran_pub= ] 'published_in_tran_pub'
    Indica que un artículo de una publicación de combinación también está publicado en una publicación transaccional. published_in_tran_pub es de tipo nvarchar(5) y su valor predeterminado es FALSE. true especifica que el artículo también está publicado 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 de tipo bit y su valor predeterminado es 0.

    0 especifica que al agregar un artículo no se reinicializa la suscripción. Si el procedimiento almacenado detecta que el cambio requiere la reinicialización de las suscripciones existentes, se producirá un error y no se realizarán cambios.

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

  • [ @logical_record_level_conflict_detection= ] 'logical_record_level_conflict_detection'
    Especifica el nivel de detección de conflictos para un artículo que es miembro de un registro lógico. logical_record_level_conflict_detection es de tipo nvarchar(5) y su valor predeterminado es FALSE.

    true especifica que se detectará un conflicto si se realizan cambios en cualquier parte del registro lógico.

    false especifica que se usa la detección de conflictos predeterminada tal como se indica en column_tracking. Para obtener más información, vea Agrupar cambios en filas relacionadas con registros lógicos.

    Nota

    Dado que no se admiten registros lógicos en los suscriptores de SQL Server Compact 3.5 SP2, se debe especificar false como valor de logical_record_level_conflict_detection para admitir estos suscriptores.

  • [ @logical_record_level_conflict_resolution= ] 'logical_record_level_conflict_resolution'
    Especifica el nivel de resolución de conflictos para un artículo que es miembro de un registro lógico. logical_record_level_conflict_resolution es de tipo nvarchar(5) y su valor predeterminado es FALSE.

    true especifica que todo el registro lógico ganador sobrescribe el registro lógico perdedor.

    false especifica que las filas ganadoras no se restringen al registro lógico. Si el valor de logical_record_level_conflict_detection es true, logical_record_level_conflict_resolution también debe establecerse en true. Para obtener más información, vea Agrupar cambios en filas relacionadas con registros lógicos.

    Nota

    Dado que no se admiten registros lógicos en los suscriptores de SQL Server Compact 3.5 SP2, debe especificar false como valor de logical_record_level_conflict_resolution para admitir estos suscriptores.

  • [ @partition_options= ] partition_options
    Define el modo en 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 de tipo tinyint y puede tener uno de los valores siguientes.

    Valor

    Descripción

    0 (predeterminado)

    El filtro para el artículo es estático o no produce un subconjunto de datos único para cada partición, es decir, es 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 la 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 en los dos artículos.

  • [ @processing_order= ] processing_order
    Indica el orden de procesamiento de los artículos en una publicación de combinación. processing_order es de tipo int, con un valor predeterminado de 0. 0 especifica que el artículo está desordenado y cualquier otro valor representa el valor ordinal del orden de procesamiento para 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 del alias del artículo en la tabla del sistema sysmergearticles determina el orden de procesamiento. Para obtener más información, vea Especificar el orden de procesamiento de los artículos de mezcla.

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

    Valor

    Descripción

    0 (predeterminado)

    Sin restricciones. Los cambios realizados en el suscriptor se cargan en el publicador.

    1

    Se permiten cambios en el suscriptor, pero éstos 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 en los dos artículos.

  • [ @identityrangemanagementoption= ] identityrangemanagementoption
    Especifica cómo se realiza la administración de intervalos de identidad para el artículo. identityrangemanagementoption es de tipo nvarchar(10) y puede tener uno de los valores siguientes.

    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 (predeterminado)

    El valor predeterminado es nonecuando el valor de auto_identity_range no es true.

    Para mantener la compatibilidad con versiones anteriores, cuando el valor de identityrangemanagementoption es NULL, se comprueba el valor de auto_identity_range . No obstante, cuando el valor de identityrangemanagementoption no es NULL, se omite el valor de auto_identity_range. Para obtener más información, vea Replicar columnas de identidad.

  • [ @delete_tracking= ] 'delete_tracking'
    Indica si se replican las eliminaciones. delete_tracking es de tipo nvarchar(5) y su valor predeterminado es TRUE. false indica que las eliminaciones no se replican y true indica que las eliminaciones se replican (comportamiento habitual en la replicación de mezcla). Cuando delete_tracking se establece en false, 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.

    Nota importanteImportante

    Si se establece delete_tracking en false, se produce una falta de 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 en los dos artículos.

    Nota

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

  • [ @compensate_for_errors= ] 'compensate_for_errors'
    Indica si se realizan acciones de compensación cuando se encuentran errores en la sincronización. compensate_for_errors i es de tipo nvarchar(5) y su valor predeterminado es FALSE. Cuando se establece en true, los cambios que no se pueden aplicar en un suscriptor o en un publicador durante la sincronización siempre conllevan acciones de compensación para deshacerlos; no obstante, un suscriptor configurado incorrectamente que genera un error puede provocar que se deshagan cambios en otros suscriptores y publicadores. false deshabilita estas acciones de compensación; sin embargo, los errores siguen registrándose como compensaciones y las mezclas posteriores siguen intentando aplicar los cambios hasta que lo consiguen.

    Nota

    En suscripciones de extracción de suscriptores que ejecutan Microsoft SQL Server 2000 8.00.858 y versiones anteriores (lo que incluye el SP3), seguirán produciéndose acciones de compensación incluso con el parámetro compensate_for_errors establecido en false.

    Nota importanteImportante

    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 en los dos artículos.

  • [ @stream_blob_columns= ] 'stream_blob_columns'
    Especifica si se utiliza una optimización del flujo de datos al replicar columnas de objetos binarios grandes. stream_blob_columns es de tipo nvarchar(5) y su valor predeterminado es FALSE. true significa que se intentará la optimización. stream_blob_columns se establece en true cuando FILESTREAM está habilitado. Esto permite la replicación de datos FILESTREAM a fin de obtener un rendimiento óptimo y reducir el uso de la memoria. Para forzar que los artículos de tabla FILESTREAM no usen transmisión de datos BLOB, use sp_changemergearticle para establecer stream_blob_columns en false.

    Nota importanteImportante

    Si se habilita esta optimización de la memoria, el rendimiento del Agente de mezcla podría verse afectado durante la sincronización. Esta opción solo se debe utilizar al replicar columnas que contienen megabytes de datos.

    Nota

    Determinadas funciones de la replicación de mezcla, como los registros lógicos, pueden impedir que se utilice la optimización de secuencia al replicar objetos binarios grandes, incluso con stream_blob_columns establecido en true.

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

sp_addmergearticle se utiliza 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 varios objetos, debe publicar todos los objetos a los que hace referencia. Por ejemplo, si publica una vista que depende de una tabla, también debe publicar la tabla.

Si especifica el valor 3 en partition_options, solo podrá haber una suscripción para cada partición de datos en 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.

Si especifica el valor 3 en partition_options, los metadatos se limpian siempre 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 obtener más información, vea Instantáneas para publicaciones de mezcla con filtros con parámetros.

Agregar un artículo con un filtro horizontal estático, con subset_filterclause, a una publicación existente con artículos que tienen filtros con parámetros requiere la reinicialización de las suscripciones.

Al especificar processing_order, se recomienda dejar espacios entre los valores de orden del artículo, lo que facilita establecer nuevos valores en el futuro. Por ejemplo, si tiene tres artículos: Artículo1, Artículo2 y Artículo3, establezca processing_order en 10, 20 y 30, en vez de en 1, 2 y 3. Para obtener más información, vea Especificar el orden de procesamiento de los artículos de mezcla.

Tabla Opciones de esquema predeterminadas

En esta tabla se describe el valor predeterminado establecido por el procedimiento almacenado si se especifica un valor NULL 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 y versiones posteriores con una instantánea en modo nativo.

  • 0x08034FF1: publicaciones compatibles con SQL Server 2005 y versiones posteriores con una instantánea en modo de carácter.

  • 0x30034FF1: publicaciones compatibles con SQL Server 2000 y versiones anteriores.

view schema only

0x01

Nota

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

Tabla Opciones de esquema válidas

En la tabla siguiente se describen los valores permitidos de 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

Ejemplo

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.