sp_addarticle (Transact-SQL)

Actualizado: 14 de abril de 2006

Crea un artículo y lo agrega a una publicación. 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_addarticle [ @publication = ] 'publication' 
        , [ @article = ] 'article' 
    [ , [ @source_table = ] 'source_table' ]
    [ , [ @destination_table = ] 'destination_table' ] 
    [ , [ @vertical_partition = ] 'vertical_partition' ] 
    [ , [ @type = ] 'type' ] 
    [ , [ @filter = ] 'filter' ] 
    [ , [ @sync_object= ] 'sync_object' ] 
    [ , [ @ins_cmd = ] 'ins_cmd' ] 
    [ , [ @del_cmd = ] 'del_cmd' ] 
    [ , [ @upd_cmd = ] 'upd_cmd' ] 
    [ , [ @creation_script = ] 'creation_script' ] 
    [ , [ @description = ] 'description' ] 
    [ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ] 
    [ , [ @filter_clause = ] 'filter_clause' ] 
    [ , [ @schema_option = ] schema_option ] 
    [ , [ @destination_owner = ] 'destination_owner' ] 
    [ , [ @status = ] status ] 
    [ , [ @source_owner = ] 'source_owner' ] 
    [ , [ @sync_object_owner = ] 'sync_object_owner' ] 
    [ , [ @filter_owner = ] 'filter_owner' ] 
    [ , [ @source_object = ] 'source_object' ] 
    [ , [ @artid = ] article_ID  OUTPUT ] 
    [ , [ @auto_identity_range = ] 'auto_identity_range' ] 
    [ , [ @pub_identity_range = ] pub_identity_range ] 
    [ , [ @identity_range = ] identity_range ] 
    [ , [ @threshold = ] threshold ] 
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @use_default_datatypes = ] use_default_datatypes
    [ , [ @identityrangemanagementoption = ] identityrangemanagementoption ]
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' ] 

Argumentos

  • [ @publication = ] 'publication'
    Es el nombre de la publicación que contiene el artículo. El nombre debe ser único en la base de datos. 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.
  • [ @source\_table = ] 'source_table'
    Este parámetro ya no se admite y se proporciona por compatibilidad con versiones anteriores de secuencias de comandos; en su lugar, use source_object. Este parámetro no se admite en publicadores de Oracle.
  • [ @destination\_table = ] 'destination_table'
    Es el nombre de la tabla de destino (suscripción), si es distinto de source_table o el procedimiento almacenado. destination_table es de tipo sysname y su valor predeterminado es NULL, lo que significa que source_table es igual que destination_table.
  • [ @vertical\_partition = ] 'vertical_partition'
    Habilita y deshabilita el filtro de columnas en un artículo de tabla. vertical_partition es de tipo nchar(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 la clave principal declarada, las columnas que aceptan valores NULL sin un valor predeterminado y las columnas de clave única . Las columnas se agregan con sp_articlecolumn.

  • [ @type = ] 'type'
    Es el tipo de artículo. type es de tipo sysname y puede tener uno de los valores siguientes.

    Valor Descripción

    aggregate schema only

    Función de agregado con sólo esquema.

    func schema only

    Función con sólo esquema.

    indexed view logbased

    Artículo de vista indizada basado en registro. No se admite en publicadores de Oracle. En este tipo de artículo, no es necesario que la tabla base se publique por separado.

    indexed view logbased manualboth

    Artículo de vista indizada basado en registro con filtro manual y vista manual. Esta opción requiere que especifique los parámetros sync_object y filter. En este tipo de artículo, no es necesario que la tabla base se publique por separado. No se admite en publicadores de Oracle.

    indexed view logbased manualfilter

    Artículo de vista indizada basado en registro con filtro manual. Esta opción requiere que especifique los parámetros sync_object y filter. En este tipo de artículo, no es necesario que la tabla base se publique por separado. No se admite en publicadores de Oracle.

    indexed view logbased manualview

    Artículo de vista indizada basado en registro con vista manual. Esta opción requiere que especifique el parámetro sync_object. En este tipo de artículo, no es necesario que la tabla base se publique por separado. No se admite en publicadores de Oracle.

    indexed view schema only

    Vista indizada con sólo esquema. En este tipo de artículo también debe publicarse la tabla base.

    logbased (predeterminado)

    Artículo basado en registro.

    logbased manualboth

    Artículo basado en registro con filtro manual y vista manual. Esta opción requiere que especifique los parámetros sync_object y filter. No se admite en publicadores de Oracle.

    logbased manualfilter

    Artículo basado en registro con filtro manual. Esta opción requiere que especifique los parámetros sync_object y filter. No se admite en publicadores de Oracle.

    logbased manualview

    Artículo basado en registro con vista manual. Esta opción requiere que especifique el parámetro sync_object. No se admite en publicadores de Oracle.

    proc exec

    Replica la ejecución del procedimiento almacenado a todos los suscriptores del artículo. No se admite en publicadores de Oracle.

    proc schema only

    Procedimiento con sólo esquema. No se admite en publicadores de Oracle.

    serializable proc exec

    Replica la ejecución del procedimiento almacenado sólo si éste se ejecuta dentro del contexto de una transacción serializable. No se admite en publicadores de Oracle.

    view schema only

    Vista con sólo esquema. No se admite en publicadores de Oracle. Si se utiliza esta opción, también debe publicarse la tabla base.

  • [ @filter = ] 'filter'
    Es el procedimiento almacenado (creado con FOR REPLICATION) usado para filtrar horizontalmente la tabla. filter es de tipo nvarchar(386) y su valor predeterminado es NULL. sp_articleview y sp_articlefilter deben ejecutarse manualmente para crear la vista y el procedimiento almacenado de filtro. Si no es NULL, el procedimiento de filtro no se crea (se presupone que el procedimiento almacenado se crea manualmente).
  • [ @sync\_object = ] 'sync_object'
    Es el nombre de la tabla o vista utilizada para generar el archivo de datos usado para representar la instantánea de este artículo. sync_object es de tipo nvarchar(386) y su valor predeterminado es NULL. Si es NULL, se llama a sp_articleview para crear automáticamente la vista utilizada para generar el archivo de salida. Esto ocurre después de agregar columnas con sp_articlecolumn. Si no es NULL, no se crea la vista (se presupone que la vista se crea manualmente).
  • [ @ins\_cmd = ] 'ins_cmd'
    Es el tipo de comando de réplica utilizado cuando se replican inserciones para este artículo. ins_cmd es de tipo nvarchar(255) y puede tener uno de los valores siguientes.

    Valor Descripción

    NONE

    No se requiere ninguna acción.

    CALL sp_MSins_table (predeterminado)

    O bien

    CALL custom_stored_procedure_name

    Llama a un procedimiento almacenado que se ejecutará en el suscriptor. Para utilizar este método de réplica, utilice schema_option para especificar la creación automática del procedimiento almacenado o cree el procedimiento almacenado especificado en la base de datos de destino de cada suscriptor del artículo. custom_stored_procedure es el nombre de un procedimiento almacenado creado por el usuario. sp_MSins_table contiene el nombre de la tabla de destino en lugar de la parte _table del parámetro. Cuando se especifica destination_owner, se antepone al nombre de la tabla de destino. Por ejemplo, en la tabla ProductCategory que es propiedad del esquema Production en el suscriptor, el parámetro sería CALL sp_MSins_ProductionProductCategory. Para un artículo en una topología de réplica de punto a punto, _table se anexa con un valor GUID. custom_stored_procedure no se admite en suscriptores de actualización.

    SQL o NULL

    Replica una instrucción INSERT. La instrucción INSERT recibe valores para todas las columnas publicadas en el artículo. Este comando se replica con las inserciones:

    INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue)

    Para obtener más información, vea Especificar cómo se propagan los cambios para los artículos transaccionales.

  • [ @del\_cmd =] 'del_cmd'
    Es el tipo de comando de réplica utilizado cuando se replican eliminaciones para este artículo. del_cmd es de tipo nvarchar(255) y puede tener uno de los valores siguientes.

    Valor Descripción

    NONE

    No se requiere ninguna acción.

    CALLsp_MSdel_table (predeterminado)

    O bien

    CALL custom_stored_procedure_name

    Llama a un procedimiento almacenado que se ejecutará en el suscriptor. Para utilizar este método de réplica, utilice schema_option para especificar la creación automática del procedimiento almacenado o cree el procedimiento almacenado especificado en la base de datos de destino de cada suscriptor del artículo. custom_stored_procedure es el nombre de un procedimiento almacenado creado por el usuario. sp_MSdel_table contiene el nombre de la tabla de destino en lugar de la parte _table del parámetro. Cuando se especifica destination_owner, se antepone al nombre de la tabla de destino. Por ejemplo, en la tabla ProductCategory que es propiedad del esquema Production en el suscriptor, el parámetro sería CALL sp_MSdel_ProductionProductCategory. Para un artículo en una topología de réplica de punto a punto, _table se anexa con un valor GUID. custom_stored_procedure no se admite en suscriptores de actualización.

    XCALL sp_MSdel_table

    O bien

    XCALL custom_stored_procedure_name

    Llama a un procedimiento almacenado con parámetros del estilo XCALL. Para utilizar este método de réplica, use schema_option para especificar la creación automática del procedimiento almacenado o cree el procedimiento almacenado especificado en la base de datos de destino de cada suscriptor del artículo. No se permite especificar un procedimiento almacenado creado por el usuario en suscriptores de actualización.

    SQL o NULL

    Replica una instrucción DELETE. La instrucción DELETE recibe todos los valores de las columnas de clave principal. Este comando se replica con las eliminaciones:

    DELETE FROM <table name> WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue

    Para obtener más información, vea Especificar cómo se propagan los cambios para los artículos transaccionales.

  • [ @upd\_cmd =] 'upd_cmd'
    Es el tipo de comando de réplica utilizado cuando se replican actualizaciones para este artículo. upd_cmd es de tipo nvarchar(255) y puede tener uno de los valores siguientes.

    Valor Descripción

    NONE

    No se requiere ninguna acción.

    CALL sp_MSupd_table

    O bien

    CALL custom_stored_procedure_name

    Llama a un procedimiento almacenado que se ejecutará en el suscriptor. Para utilizar este método de réplica, use schema_option para especificar la creación automática del procedimiento almacenado o cree el procedimiento almacenado especificado en la base de datos de destino de cada suscriptor del artículo.

    MCALL sp_MSupd_table

    O bien

    MCALL custom_stored_procedure_name

    Llama a un procedimiento almacenado con parámetros del estilo MCALL. Para utilizar este método de réplica, utilice schema_option para especificar la creación automática del procedimiento almacenado o cree el procedimiento almacenado especificado en la base de datos de destino de cada suscriptor del artículo. custom_stored_procedure es el nombre de un procedimiento almacenado creado por el usuario. sp_MSupd_table contiene el nombre de la tabla de destino en lugar de la parte _table del parámetro. Cuando se especifica destination_owner, se antepone al nombre de la tabla de destino. Por ejemplo, en la tabla ProductCategory que es propiedad del esquema Production en el suscriptor, el parámetro sería MCALL sp_MSupd_ProductionProductCategory. Para un artículo en una topología de réplica de punto a punto, _table se anexa con un valor GUID. No se permite especificar un procedimiento almacenado creado por el usuario en suscriptores de actualización.

    SCALL sp_MSupd_table (predeterminado)

    O bien

    SCALL custom_stored_procedure_name

    Llama a un procedimiento almacenado con parámetros del estilo SCALL. Para utilizar este método de réplica, utilice schema_option para especificar la creación automática del procedimiento almacenado o cree el procedimiento almacenado especificado en la base de datos de destino de cada suscriptor del artículo. custom_stored_procedure es el nombre de un procedimiento almacenado creado por el usuario. sp_MSupd_table contiene el nombre de la tabla de destino en lugar de la parte _table del parámetro. Cuando se especifica destination_owner, se antepone al nombre de la tabla de destino. Por ejemplo, en la tabla ProductCategory que es propiedad del esquema Production en el suscriptor, el parámetro sería SCALL sp_MSupd_ProductionProductCategory. Para un artículo en una topología de réplica de punto a punto, _table se anexa con un valor GUID. No se permite especificar un procedimiento almacenado creado por el usuario en suscriptores de actualización.

    XCALL sp_MSupd_table

    O bien

    XCALL custom_stored_procedure_name

    Llama a un procedimiento almacenado con parámetros del estilo XCALL. Para utilizar este método de réplica, use schema_option para especificar la creación automática del procedimiento almacenado o cree el procedimiento almacenado especificado en la base de datos de destino de cada suscriptor del artículo. No se permite especificar un procedimiento almacenado creado por el usuario en suscriptores de actualización.

    SQL o NULL

    Replica una instrucción UPDATE. La instrucción UPDATE está disponible en todos los valores de columna y los valores de las columnas de clave principal. Este comando se replica con las actualizaciones:

    UPDATE <table name> SET c1 = c1value, SET c2 = c2value, SET cn = cnvalue WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue

    [!NOTA] La sintaxis CALL, MCALL, SCALL y XCALL varía la cantidad de datos propagados al suscriptor. La sintaxis CALL pasa todos los valores de todas las columnas insertadas y eliminadas. La sintaxis SCALL sólo pasa los valores de las columnas afectadas. La sintaxis XCALL pasa los valores de todas las columnas, tanto si han cambiado como si no, incluido el valor anterior de la columna. Para obtener más información, vea Especificar cómo se propagan los cambios para los artículos transaccionales.

  • [ @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.
  • [ @description =] 'description'
    Es una entrada descriptiva para el artículo. description es de tipo nvarchar(255) y su valor predeterminado es NULL.
  • [ @pre\_creation\_cmd =] 'pre_creation_cmd'
    Especifica lo que debería hacer el sistema si detecta un objeto existente con el mismo nombre en el suscriptor al aplicar la instantánea de este artículo. pre_creation_cmd es de tipo nvarchar(10) y puede tener uno de los valores siguientes.

    Valor Descripción

    none

    No usa ningún comando.

    delete

    Elimina datos de la tabla de destino antes de aplicar la instantánea. Cuando el artículo se filtra horizontalmente, sólo se eliminan los datos en las columnas especificadas en la cláusula de filtro. No se admite en publicadores de Oracle si se ha definido un filtro horizontal.

    drop (predeterminado)

    Quita la tabla de destino.

    truncate

    Trunca la tabla de destino. No es válido para los suscriptores de ODBC o de OLE DB.

  • [ **@filter\_clause=**\] 'filter_clause'
    Es una cláusula de restricción (WHERE) que define un filtro horizontal. Cuando escriba la cláusula de restricción, omita la palabra clave WHERE. filter_clause es de tipo ntext y su valor predeterminado es NULL. Para obtener más información, vea Filtrar datos publicados.
  • [ @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:

    [!NOTA] Si este valor es NULL, el sistema genera automáticamente una opción de esquema válida para el artículo dependiendo de las propiedades del artículo. La tabla Opciones de esquema predeterminadas que se incluye en la sección Notas muestra el valor que se elegirá según la combinación del tipo de artículo y el tipo de réplica.

    Valor

  • [ @destination\_owner =] 'destination_owner'
    Es el nombre del propietario del objeto de destino. destination_owner es de tipo sysname y su valor predeterminado es NULL. Cuando no se especifica destination_owner, el propietario se especifica automáticamente basándose en las siguientes reglas:

    Condición Propietario del objeto de destino

    La publicación utiliza una copia masiva en modo nativo para generar la instantánea inicial, que sólo admite suscriptores de SQL Server.

    Utiliza como predeterminado el valor de source_owner.

    Publicado desde un publicador que no es de SQL Server.

    El valor predeterminado es el propietario de la base de datos de destino.

    La publicación utiliza una copia masiva en modo de carácter para generar la instantánea inicial, que admite suscriptores que no son de SQL Server.

    No asignado.

    Para admitir suscriptores que no son de SQL Server, destination_owner debe ser NULL.

  • [ **@status=**\] status
    Especifica si el artículo está activo y opciones adicionales sobre cómo se propagan los cambios. status es de tipo tinyint y puede ser el producto de | (OR bit a bit) de uno o varios de los valores siguientes.

    Valor

  • [ @source\_owner =] 'source_owner'
    Es el propietario del objeto de origen. source_owner es de tipo sysname y su valor predeterminado es NULL. source_owner debe especificarse en publicadores de Oracle.
  • [ @sync\_object\_owner =] 'sync_object_owner'
    Es el propietario de la vista que define el artículo publicado. sync_object_owner es de tipo sysname y su valor predeterminado es NULL.
  • [ @filter\_owner =] 'filter_owner'
    Es el propietario del filtro. filter_owner es de tipo sysname y su valor predeterminado es NULL.
  • [ @source\_object =] 'source_object'
    Es el objeto de base de datos que se va a publicar. source_object es de tipo sysname y su valor predeterminado es NULL. Si source_table es NULL, source_object no puede ser NULL.**Debe utilizarse source_object en vez de source_table. Para obtener más información sobre los tipos de objetos que se pueden publicar utilizando la réplica transaccional o de instantáneas, vea Publicar datos y objetos de base de datos.
  • [ @artid = ] article_ID OUTPUT
    Es el Id. de artículo del nuevo artículo. article_ID es de tipo int, su valor predeterminado es NULL, y es un parámetro OUTPUT.
  • [ @auto\_identity\_range = ] 'auto_identity_range'
    Habilita o deshabilita la administración automática de intervalos de identidad de una publicación en el momento de su creación. auto_identity_range es de tipo nvarchar(5) y puede tener uno de los valores siguientes:

    Valor Descripción

    true

    Habilita la administración automática de intervalos de identidad

    false

    Deshabilita la administración automática de intervalos de identidad

    NULL (predeterminado)

    identityrangemanagementoption establece la administración de intervalos de identidad.

    [!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 en el publicador si el artículo tiene identityrangemanagementoption establecido en auto o auto_identity_range establecido en true. pub_identity_range es de tipo bigint y su valor predeterminado es NULL. No es compatible con publicadores de Oracle.
  • [ @identity\_range = ] identity_range
    Controla el tamaño del intervalo en el suscriptor si el artículo tiene identityrangemanagementoption establecido en auto o auto_identity_range establecido en true. identity_range es de tipo bigint y su valor predeterminado es NULL. Se utiliza cuando auto_identity_range está establecido en true. No se admite en publicadores de Oracle.
  • [ @threshold = ] threshold
    Es el valor de porcentaje que controla cuándo el Agente de distribución asigna un nuevo intervalo de identidad. Cuando se utiliza el porcentaje de valores especificado en threshold, el Agente de distribución crea un nuevo intervalo de identidad. threshold es de tipo bigint y su valor predeterminado es NULL. Se utiliza cuando identityrangemanagementoption está establecido en auto o auto_identity_range está establecido en true. No es compatible con publicadores de Oracle.
  • [ @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 produce un error y no se realizan cambios.

    1 especifica que, si se agrega un artículo, se puede invalidar la instantánea y, si existen suscripciones que necesiten una nueva instantánea, se conceda permiso para marcar como obsoleta la instantánea existente y generar una nueva.

  • [ @use\_default\_datatypes = ] use_default_datatypes
    Indica si se utilizan asignaciones de tipos de datos de columna predeterminadas al publicar un artículo desde un publicador de Oracle. use_default_datatypes es de tipo bit y su valor predeterminado es 1.

    1 = se utilizan asignaciones de columnas de artículo predeterminadas. Las asignaciones de tipos de datos predeterminadas se pueden mostrar ejecutando sp_getdefaultdatatypemapping.

    0 = se definen asignaciones de columnas de artículo personalizadas y, por tanto, sp_addarticle no llama a sp_articleview.

    Cuando use_default_datatypes se establece en 0, debe ejecutar sp_changearticlecolumndatatype una vez por cada asignación de columna en que se cambia el valor predeterminado. Después de definir todas las asignaciones de columnas personalizadas, debe ejecutar sp_articleview.

    [!NOTA] Este parámetro sólo debe utilizarse en publicadores de Oracle. Establecer use_default_datatypes en 0 en un publicador de SQL Server genera un error.

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

    La réplica no realiza una administración de intervalos de identidad explícita. Se recomienda esta opción sólo por compatibilidad con las versiones anteriores de SQL Server. No se permite en la réplica de punto a punto.

    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. El valor predeterminado es manual en una topología de punto a punto predeterminada (auto_identity_range se omite).

    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, el valor de auto_identity_range se omite*.*

    Para obtener más información, vea Replicar columnas de identidad.

  • [ @publisher = ] 'publisher'
    Especifica un publicador que no es de SQL Server. publisher es de tipo sysname y su valor predeterminado es NULL.

    [!NOTA] El parámetro publisher no debe utilizarse al agregar un artículo a un publicador de SQL Server.

  • [ @fire\_triggers\_on\_snapshot = ] 'fire_triggers_on_snapshot'
    Indica si los desencadenadores replicados del usuario se ejecutan al aplicar la instantánea inicial. fire_triggers_on_snapshot es de tipo nvarchar(5) y su valor predeterminado es FALSE. true significa que los desencadenadores de usuario en una tabla replicada se ejecutan cuando se aplica la instantánea. Para replicar los desencadenadores, el valor de la máscara de bits de schema_option debe incluir el valor 0x100.

Notas

sp_addarticle se utiliza en la réplica de instantáneas o transaccional.

De forma predeterminada, la réplica no publica columnas en la tabla de origen cuando el tipo de datos de columna no se admite en la réplica. Si necesita publicar este tipo de columnas, debe ejecutar sp_articlecolumn para agregar la columna. Para obtener más información, vea Consideraciones para todos los tipos de réplica.

Al agregar un artículo a una publicación que admite la réplica transaccional de punto a punto, se aplican las restricciones siguientes:

  • Deben especificarse instrucciones con parámetros para todos los artículos de tipo logbased. Debe incluir 16 en el valor de status.
  • El nombre y el propietario de la tabla de destino deben coincidir con los de la tabla de origen.
  • El artículo no puede filtrarse horizontal ni verticalmente.
  • No se admite la administración automática de intervalos de identidad. Debe especificar el valor manual para identityrangemanagementoption.
  • Si en la tabla existe una columna timestamp, debe incluir 0x08 en schema_option para replicar la columna como timestamp.
  • No se puede especificar el valor SQL para ins_cmd, upd_cmd ni del_cmd.

Para obtener más información, vea Réplica transaccional de punto a punto.

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 vertical_partition está establecido en true, sp_addarticle aplaza la creación de la vista hasta que se llama a sp_articleview (después de agregar la última columna sp_articlecolumn).

Si la publicación permite suscripciones de actualización y la tabla publicada no tiene una columna uniqueidentifier, sp_addarticle agrega automáticamente una columna uniqueidentifier a la tabla.

En artículos que admiten suscripciones transformables, se omiten los valores especificados en ins_cmd, del_cmdy upd_cmd.

Opciones de esquema predeterminadas

En esta tabla se describe el valor predeterminado que establece la réplica si el usuario no especifica schema_options; este valor depende del tipo de réplica (que se muestra en la parte superior) y el tipo de artículo (que se muestra en la primera columna).

Tipo de artículo Tipo de réplica  

 

Transaccional

Instantánea

aggregate schema only

0x01

0x01

func schema only

0x01

0x01

indexed view schema only

0x01

0x01

indexed view logbased

0x30F3

0x3071

indexed view logbase manualboth

0x30F3

0x3071

indexed view logbased manualfilter

0x30F3

0x3071

indexed view logbased manualview

0x30F3

0x3071

logbased

0x30F3

0x3071

logbased manualfilter

0x30F3

0x3071

logbased manualview

0x30F3

0x3071

proc exec

0x01

0x01

proc schema only

0x01

0x01

serialized proc exec

0x01

0x01

view schema only

0x01

0x01

[!NOTA] Si una publicación está habilitada para actualización en cola, un valor schema_option de 0x80 se agrega al valor predeterminado que se muestra en la tabla. El valor predeterminado de schema_option para una publicación que no es de SQL Server es 0x050D3.

Opciones de esquema válidas

En esta tabla se describen los valores permitidos de schema_option en función del tipo de réplica (valores de la parte superior) y el tipo de artículo (valores de la primera columna).

Tipo de artículo Tipo de réplica  

 

Transaccional

Instantánea

logbased

Todas las opciones

Todas las opciones excepto 0x02

logbased manualfilter

Todas las opciones

Todas las opciones excepto 0x02

logbased manualview

Todas las opciones

Todas las opciones excepto 0x02

indexed view logbased

Todas las opciones

Todas las opciones excepto 0x02

indexed view logbased manualfilter

Todas las opciones

Todas las opciones excepto 0x02

indexed view logbased manualview

Todas las opciones

Todas las opciones excepto 0x02

indexed view logbase manualboth

Todas las opciones

Todas las opciones excepto 0x02

proc exec

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 y 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 y 0x80000000

serialized proc exec

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 y 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 y 0x80000000

proc schema only

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 y 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 y 0x80000000

view schema only

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 y 0x80000000

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 y 0x80000000

func schema only

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 y 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 y 0x80000000

indexed view schema only

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 y 0x80000000

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 y 0x80000000

[!NOTA] Para las publicaciones de actualización en cola, se deben habilitar los valores 0x8000 y 0x80 de schema_option. Los valores de schema_option admitidos para las publicaciones que no son de SQL Server son: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000, 0x4000 y 0X8000.

Permisos

Sólo los miembros de la función fija de servidor sysadmin o de la función fija de base de datos db_owner pueden ejecutar sp_addarticle.

Valores de código de retorno

0 (correcto) o 1 (error)

Ejemplo

DECLARE @publication    AS sysname;
DECLARE @table AS sysname;
DECLARE @filterclause AS nvarchar(500);
DECLARE @filtername AS nvarchar(386);
DECLARE @schemaowner AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @table = N'Product';
SET @filterclause = N'[DiscontinuedDate] IS NULL'; 
SET @filtername = N'filter_out_discontinued';
SET @schemaowner = N'Production';

-- Add a horizontally and vertically filtered article for the Product table.
-- Manually set @schema_option to ensure that the Production schema 
-- is generated at the Subscriber (0x8000000).
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @table, 
    @source_object = @table,
    @source_owner = @schemaowner, 
    @schema_option = 0x80030F3,
    @vertical_partition = N'true', 
    @type = N'logbased',
    @filter_clause = @filterclause;

-- (Optional) Manually call the stored procedure to create the 
-- horizontal filtering stored procedure. Since the type is 
-- 'logbased', this stored procedures is executed automatically.
EXEC sp_articlefilter 
    @publication = @publication, 
    @article = @table, 
    @filter_clause = @filterclause, 
    @filter_name = @filtername;

-- Add all columns to the article.
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table;

-- Remove the DaysToManufacture column from the article
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table, 
    @column = N'DaysToManufacture', 
    @operation = N'drop';

-- (Optional) Manually call the stored procedure to create the 
-- vertical filtering view. Since the type is 'logbased', 
-- this stored procedures is executed automatically.
EXEC sp_articleview 
    @publication = @publication, 
    @article = @table,
    @filter_clause = @filterclause;
GO

Vea también

Referencia

sp_articlecolumn (Transact-SQL)
sp_articlefilter (Transact-SQL)
sp_articleview (Transact-SQL)
sp_changearticle (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (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

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 para establecer la opción 0x20 del parámetro schema_option.
Contenido modificado:
  • Se han aclarado las descripciones de las opciones compatibles con el parámetro type.
  • Se ha corregido el tamaño del parámetro creation_script.