sp_addmergearticle (Transact-SQL)

Actualizado: 14 de abril de 2006

Agrega un artículo a una publicación de mezcla 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 réplica 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 réplica supervisa la tabla para determinar los datos que se van a replicar.

    func schema only

    Función con sólo esquema.

    indexed view schema only

    Vista indizada con sólo esquema.

    proc schema only

    Procedimiento almacenado con sólo esquema.

    synonym schema only

    Sinónimo con sólo esquema.

    view schema only

    Vista con sólo 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. true activa 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 mezcla, 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 réplica 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 la secuencia de comandos inicial de proceso para publicar la tabla. Si es unsynced, la secuencia de comandos de procesos inicial para publicar la tabla se ejecuta la próxima vez que se ejecute 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 2005 Compact Edition.

    truncate

    Trunca la tabla de destino.

  • [ **@creation\_script=** ] 'creation_script'
    Es la ruta de acceso y el nombre de una secuencia de comandos de esquema de artículo opcional utilizada 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] Las secuencias de comandos de creación no se ejecutan en suscriptores de SQL Server 2005 Compact Edition.

  • [ **@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

  • [ **@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.

    ms174329.note(es-es,SQL.90).gifImportante:
    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 la resolución basada en COM utilizada para resolver conflictos en el artículo de tabla o en el ensamblado .NET Framework llamado 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 las resoluciones personalizadas de Microsoft. Si el valor proporcionado no es una de las resoluciones de Microsoft, SQL Server utiliza la resolución especificada en lugar de la resolución proporcionada por el sistema. Utilice sp_enumcustomresolvers para enumerar la lista de resoluciones personalizadas 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 réplica de mezcla avanzada.
  • [ **@resolver\_info=** ] 'resolver_info'
    Se utiliza para especificar información adicional necesaria para una resolución personalizada. Algunas de las resoluciones de Microsoft requieren que se proporcione una columna como entrada para la resolución. 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 filtro 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 o deshabilita la administración automática de intervalos de identidad de este artículo de tabla de 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 sólo 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 réplica de mezcla se comprueba una firma digital antes de utilizar una resolución. 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 sólo 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 de la resolución interactiva en un artículo. allow_interactive_resolver es de tipo nvarchar(5) y su valor predeterminado es FALSE. true habilita la utilización de la resolución interactiva en el artículo; false la deshabilita.

    [!NOTA] La resolución interactiva no se admite en suscriptores de SQL Server 2005 Compact Edition.

  • [ **@fast\_multicol\_updateproc=** ] 'fast_multicol_updateproc'
    Este parámetro ya no se utiliza y se mantiene sólo por compatibilidad con versiones anteriores de secuencias de comandos.
  • [ **@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 mezcla 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 está publicado también 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 utiliza la detección de conflictos predeterminada como se indica en column_tracking. Para obtener más información, vea Agrupar cambios en filas relacionadas con registros lógicos.

    [!NOTA] Como no se admiten registros lógicos en los suscriptores de SQL Server 2005 Compact Edition, 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 reemplaza 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] Como no se admiten registros lógicos en los suscriptores de SQL Server 2005 Compact Edition, 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 mezcla. processing_order es de tipo int y su valor predeterminado es 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 sobrenombre 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 réplica 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 none cuando 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 (el comportamiento habitual en la réplica 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.

    ms174329.note(es-es,SQL.90).gifImportante:
    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 puedan aplicar en el suscriptor o el publicador durante la sincronización siempre llevan a acciones de compensación para deshacer el cambio; no obstante, un suscriptor mal configurado que genere un error puede provocar que se deshagan cambios en otros suscriptores y publicadores. false deshabilita estas acciones de compensación, sin embargo, los errores se registran como compensaciones y las siguientes mezclas siguen intentando aplicar los cambios hasta que sean correctos.

    [!NOTA] Para suscripciones de extracción en suscriptores que utilizan Microsoft SQL Server 2000 versión 8.00.858 y anteriores (incluido SP3), las acciones de compensación seguirán produciéndose aunque se establezca compensate_for_errors en false.

    ms174329.note(es-es,SQL.90).gifImportante:
    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 la optimización de secuencia 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.

    ms174329.note(es-es,SQL.90).gifImportante:
    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 sólo se debe utilizar al replicar columnas que contienen megabytes de datos.

    [!NOTA] Determinadas funciones de la réplica 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.

Notas

sp_addmergearticle se utiliza en la réplica 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, sólo 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 caduca 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 que establece el procedimiento almacenado si se especifica un valor NULL en 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 con una instantánea en modo nativo.
  • 0x08034FF1: publicaciones compatibles con SQL Server 2005 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

Permisos

Debe pertenecer a la función fija de servidor sysadmin o a la función fija de base de datos db_owner.

Valores de código de retorno

0 (correcto) o 1 (error)

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.EmployeeID = 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

Vea también

Referencia

sp_changemergearticle (Transact-SQL)
sp_dropmergearticle (Transact-SQL)
sp_helpmergearticle (Transact-SQL)
Procedimientos almacenados de réplica (Transact-SQL)

Otros recursos

How to: Define an Article (Replication Transact-SQL Programming)
Publicar datos y objetos de base de datos
Replicar columnas de identidad
Cómo la réplica de mezcla detecta y resuelve conflictos

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

14 de abril de 2006

Contenido modificado:
  • Se ha actualizado la descripción del valor 0x20000000 del parámetro schema_option.

5 de diciembre de 2005

Contenido nuevo:
  • Se han documentado restricciones adicionales en el establecimiento de la opción 0x20 del parámetro schema_option.
  • Se han documentado restricciones de columna para tablas publicadas.
Contenido modificado:
  • Se ha actualizado la información sobre el valor de la opción de esquema predeterminado en artículos de tabla.