sp_addarticle (Transact-SQL)

Se aplica a: síSQL Server (todas las versiones admitidas) SíInstancia administrada de Azure SQL

Crea un artículo y lo agrega a una publicación. Este procedimiento almacenado se ejecuta en el Publisher en la base de datos de publicación.

Icono de vínculo de tema Convenciones 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 sysname, sin ningún valor predeterminado.

[ @article = ] 'article' Es el nombre del artículo. El nombre debe ser único en la publicación. article es sysname, sin ningún valor predeterminado.

[ @source_table = ] 'source_table' Este parámetro está en desuso; use source_object en su lugar.

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 diferente de source_table o del procedimiento almacenado. destination_table es sysname, con un valor predeterminado de NULL, lo que significa que source_table es igual a destination_table*.*

[ @vertical_partition = ] 'vertical_partition' Habilita y deshabilita el filtrado de columnas en un artículo de tabla. vertical_partition es nchar(5), con un valor predeterminado de FALSE.

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

true borra todas las columnas excepto la clave principal declarada, las columnas que aceptan valores NULL sin valores predeterminados y las columnas de clave únicas. Las columnas se agregan mediante sp_articlecolumn.

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

Valor Descripción
aggregate schema only Función de agregado con solo esquema.
func schema only Función con solo esquema.
indexed view logbased Artículo de vista indizada basado en registro. No es compatible con 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 es compatible con 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 es compatible con 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 sync_object parámetro . En este tipo de artículo, no es necesario que la tabla base se publique por separado. No es compatible con publicadores de Oracle.
indexed view schema only Vista indizada con solo esquema. En este tipo de artículo también debe publicarse la tabla base.
logbased (valor 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 es compatible con 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 es compatible con publicadores de Oracle.
logbased manualview Artículo basado en registro con vista manual. Esta opción requiere que especifique el sync_object parámetro . No es compatible con publicadores de Oracle.
proc exec Replica la ejecución del procedimiento almacenado a todos los suscriptores del artículo. No es compatible con publicadores de Oracle. Se recomienda usar la opción serializable proc exec en lugar de proc exec. Para obtener más información, vea la sección "Tipos de artículos de ejecución de procedimientos almacenados" en Publicación de la ejecución de procedimientos almacenados en la replicación transaccional. No disponible cuando la captura de datos modificados está habilitada.
proc schema only Procedimiento con solo esquema. No es compatible con publicadores de Oracle.
serializable proc exec Replica la ejecución del procedimiento almacenado solo si éste se ejecuta dentro del contexto de una transacción serializable. No es compatible con publicadores de Oracle.

El procedimiento también debe ejecutarse dentro de una transacción explícita para que se replique la ejecución del procedimiento.
view schema only Vista con solo esquema. No es compatible con 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) que se usa para filtrar la tabla horizontalmente. filter es nvarchar(386), con un valor predeterminado de NULL. sp_articleview y sp_articlefilter deben ejecutarse manualmente para crear la vista y filtrar el procedimiento almacenado. 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 que se usa para generar el archivo de datos usado para representar la instantánea de este artículo. sync_object es nvarchar(386), con un valor predeterminado de NULL. Si es NULL, sp_articleview se llama a para crear automáticamente la vista utilizada para generar el archivo de salida. Esto ocurre después de agregar cualquier columna 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 replicación utilizado al replicar inserciones para este artículo. ins_cmd es nvarchar(255) y puede ser uno de los valores siguientes.

Valor Descripción
NONE No se realiza ninguna acción.
CALL sp_MSins_
table (valor predeterminado)

O bien

CALL custom_stored_procedure_name
Llama a un procedimiento almacenado que se ejecutará en el suscriptor. Para usar este método de replicación, 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. custom_stored_procedure es el nombre de un procedimiento almacenado creado por el usuario. sp_MSins_ tabla contiene el nombre de la tabla de destino en lugar del _table parte del parámetro. Cuando destination_owner se especifica, se antepone al nombre de la tabla de destino. Por ejemplo, para la tabla ProductCategory 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 replicación punto a punto, _table se anexa con un valor GUID. La especificación custom_stored_procedure no se admite para actualizar los suscriptores.
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 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 replicación usado al replicar eliminaciones para este artículo. del_cmd es nvarchar(255) y puede ser uno de los valores siguientes.

Valor Descripción
NONE No se realiza ninguna acción.
CALLsp_MSdel_
table (valor predeterminado)

O bien

CALL custom_stored_procedure_name
Llama a un procedimiento almacenado que se ejecutará en el suscriptor. Para usar este método de replicación, 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. custom_stored_procedure es el nombre de un procedimiento almacenado creado por el usuario. sp_MSdel_ tabla contiene el nombre de la tabla de destino en lugar del _table parte del parámetro. Cuando destination_owner se especifica, se antepone al nombre de la tabla de destino. Por ejemplo, para la tabla ProductCategory 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 replicación punto a punto, _table se anexa con un valor GUID. La especificación custom_stored_procedure no se admite para actualizar los suscriptores.
XCALL sp_MSdel_
Mesa

O bien

XCALL custom_stored_procedure_name
Llama a un procedimiento almacenado con parámetros del estilo XCALL. Para usar este método de replicación, 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 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 replicación que se usa al replicar las actualizaciones de este artículo. upd_cmd es nvarchar(255) y puede ser uno de los valores siguientes.

Valor Descripción
NONE No se realiza ninguna acción.
CALL sp_MSupd_
Mesa

O bien

CALL custom_stored_procedure_name
Llama a un procedimiento almacenado que se ejecutará en el suscriptor. Para usar este método de replicación, 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_
Mesa

O bien

MCALL custom_stored_procedure_name
Llama a un procedimiento almacenado con parámetros del estilo MCALL. Para usar este método de replicación, 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. custom_stored_procedure es el nombre de un procedimiento almacenado creado por el usuario. sp_MSupd_ tabla contiene el nombre de la tabla de destino en lugar del _table parte del parámetro. Cuando destination_owner se especifica, se antepone al nombre de la tabla de destino. Por ejemplo, para la tabla ProductCategory 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 replicación 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 (valor predeterminado)

O bien

SCALL custom_stored_procedure_name
Llama a un procedimiento almacenado con parámetros del estilo SCALL. Para usar este método de replicación, 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. custom_stored_procedure es el nombre de un procedimiento almacenado creado por el usuario. sp_MSupd_ tabla contiene el nombre de la tabla de destino en lugar del _table parte del parámetro. Cuando destination_owner se especifica, se antepone al nombre de la tabla de destino. Por ejemplo, para la tabla ProductCategory 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 replicación 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_
Mesa

O bien

XCALL custom_stored_procedure_name
Llama a un procedimiento almacenado con parámetros del estilo XCALL. Para usar este método de replicación, 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 solo 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 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 un script de esquema de artículo opcional que se usa para crear el artículo en la base de datos de suscripciones. creation_script es nvarchar(255), con un valor predeterminado de NULL.

[ @description = ] 'description' Es una entrada descriptiva para el artículo. description es nvarchar(255), con un valor predeterminado de NULL.

[ @pre_creation_cmd = ] 'pre_creation_cmd' Especifica lo que debe hacer el sistema si detecta un objeto existente con el mismo nombre en el suscriptor al aplicar la instantánea para este artículo. pre_creation_cmd es nvarchar(10) y puede ser uno de los valores siguientes.

Valor Descripción
Ninguna 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, solo 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 (valor 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. Al especificar la cláusula de restricción, omita la palabra clave WHERE. filter_clause es ntext, con un valor predeterminado de 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 esquemas para el artículo dado. schema_option es binary(8) y puede ser el | (OR bit a bit) producto de uno o varios de estos valores:

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 proporciona en comentarios muestra el valor que se elegirá en función de la combinación del tipo de artículo y el tipo de replicación.

Valor Descripción
0x00 Deshabilita el scripting por el Agente de instantáneas y usa creation_script.
0x01 Genera el script de creación del objeto (CREATE TABLE, CREATE PROCEDURE, etc.). Este valor es el predeterminado en los artículos de procedimientos almacenados.
0x02 Genera los procedimientos almacenados que propagan los cambios del artículo, si se han definido.
0x04 Las columnas de identidad se incluyen en los scripts con la propiedad IDENTITY.
0x08 Replicar columnas de marca de tiempo. Si no se establece, las columnas de marca de tiempo se replican como binarias.
0x10 Genera el índice clúster correspondiente. Incluso si no se establece esta opción, los índices relacionados con las claves principales y las restricciones únicas se generan 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. No se admite para publicadores de Oracle.
0x40 Genera los índices no clúster correspondientes. Incluso si no se establece esta opción, los índices relacionados con las claves principales y las restricciones únicas se generan si ya están definidos en una tabla publicada.
0x80 Replica las restricciones de clave principal. También se replican los índices relacionados con la restricción, incluso si las opciones 0x10 y 0x40 no están habilitadas.
0x100 Replica los desencadenadores de usuario en un artículo de tabla, si se han definido. No se admite para publicadores de Oracle.
0x200 Replica las restricciones de clave externa. Si la tabla a la que se hace referencia no forma parte de una publicación, no se replica ninguna restricción de clave externa de una tabla publicada. No se admite para publicadores de Oracle.
0x400 Replica las restricciones CHECK. No se admite para publicadores de Oracle.
0x800 Replica los valores predeterminados. No se admite para publicadores de Oracle.
0x1000 Replica la intercalación de columna.

Nota: Esta opción debe establecerse para que los publicadores de Oracle habiliten comparaciones que distinguen mayúsculas de minúsculas.
0x2000 Replica las propiedades extendidas asociadas con el objeto de origen del artículo publicado. No se admite para publicadores de Oracle.
0x4000 Replica las restricciones UNIQUE. También se replican los índices relacionados con la restricción, incluso si las opciones 0x10 y 0x40 no están habilitadas.
0x8000 Esta opción no es válida para publicadores de SQL Server 2005 (9.x).
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 Enlaces predeterminados
0x800000 Enlaces de reglas
0x1000000 Í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 en ntext en el suscriptor.
0x20000000 Convierte los tipos de datos de objetos grandes (nvarchar(max), varchar(max) y varbinary(max)) introducidos en en los tipos de datos que se SQL Server 2005 (9.x) admiten en SQL Server 2000 (8.x) .
0x40000000 Replicación de permisos.
0x80000000 Intente quitar las dependencias de los 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 (9.x). No se admite la replicación de tablas que tienen columnas FILESTREAM en suscriptores, independientemente de cómo se establezca SQL Server 2000 (8.x) 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 en los tipos de datos que se admiten en versiones SQL Server 2008 anteriores de SQL Server .
0x400000000 Replica la opción de compresión para los datos y los índices. Para obtener más información, consulte Data Compression.
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) que tienen más de 8000 bytes en varbinary(max) para que las columnas de tipo UDT se puedan replicar en suscriptores que ejecutan SQL Server 2005 (9.x) .
0x2000000000 Convierte el tipo de datos hierarchyid en varbinary(max) para que las columnas de tipo hierarchyid se puedan replicar en los suscriptores que ejecutan SQL Server 2005 (9.x) . 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 Crear índices filtrados.
0x8000000000 Convierte los tipos de datos geography y geometry en varbinary(max) para que las columnas de estos tipos se puedan replicar en suscriptores que ejecutan SQL Server 2005 (9.x) .
0x10000000000 Replica índices en columnas de tipo geography y geometry.
0x20000000000 Replica el atributo SPARSE para las columnas. Para obtener más información sobre este atributo, vea Usar columnas dispersas.
0x40000000000 Habilite el scripting del agente de instantáneas para crear una tabla optimizada para memoria en el suscriptor.
0x80000000000 Convierte el índice clúster en un índice no clúster para artículos optimizados para memoria.
0x400000000000 Replica los índices de almacén de columnas no agrupados en las tablas.
0x800000000000 Replica los índices de almacén de columnas no agrupados en las tablas.
NULL La replicación schema_option establece automáticamente en un valor predeterminado, cuyo valor depende de otras propiedades del artículo. La tabla "Opciones de esquema predeterminadas" de la sección Notas muestra las opciones de esquema predeterminadas basadas en los tipos de artículo y de replicación.

El valor predeterminado para las publicaciones que no SQL Server son es 0x050D3.

No todos los schema_option son válidos para cada tipo de replicación y tipo de artículo. La tabla Opciones de esquema válidas de la sección Comentarios muestra las opciones de esquema válidas que se pueden elegir en función de la combinación del tipo de artículo y el tipo de replicación.

[ @destination_owner = ] 'destination_owner' Es el nombre del propietario del objeto de destino. destination_owner es sysname, con un valor predeterminado de NULL. Cuando destination_owner no se especifica, el propietario se especifica automáticamente en función de las reglas siguientes:

Condición Propietario del objeto de destino
La publicación utiliza una copia masiva en modo nativo para generar la instantánea inicial, que solo admite suscriptores de SQL Server. El valor predeterminado es 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 SQL Server son de , 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 tinyint y puede ser el | (OR bit a bit) producto de uno o varios de estos valores.

Valor Descripción
1 El artículo está activo.
8 Incluye el nombre de la columna en las instrucciones INSERT.
16 (valor predeterminado) Usa instrucciones con parámetros.
24 Incluye el nombre de la columna en las instrucciones INSERT y usa instrucciones con parámetros.
64 Solamente se identifica con fines informativos. No se admite. La compatibilidad con versiones posteriores no está garantizada.

Por ejemplo, un artículo activo que utilice instrucciones con parámetros tendrá un valor de 17 en esta columna. Un valor de 0 significa que el artículo está inactivo y no se definen propiedades adicionales.

[ @source_owner = ] 'source_owner' Es el propietario del objeto de origen. source_owner es sysname, con un valor predeterminado de NULL. source_owner deben especificarse para los 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 sysname, con un valor predeterminado de NULL.

[ @filter_owner = ] 'filter_owner' Es el propietario del filtro. filter_owner es sysname, con un valor predeterminado de NULL.

[ @source_object = ] 'source_object' Es el objeto de base de datos que se va a publicar. source_object es sysname, con un valor predeterminado de NULL. Si source_table es NULL, source_object puede ser NULL. source_object debe usarse en lugar de source_table. Para obtener más información sobre los tipos de objetos que se pueden publicar mediante la replicación transaccional o de instantáneas, vea Publicar datos y objetos de base de datos.

[ @artid = ] _article_ID_ OUTPUT Es el identificador del artículo nuevo. article_ID es int con un valor predeterminado de NULL y es un parámetro OUTPUT.

[ @auto_identity_range = ] 'auto_identity_range' Habilita y deshabilita el control automático de intervalos de identidad en una publicación en el momento de su creación. auto_identity_range es nvarchar(5) y puede ser 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 (valor predeterminado) Identityrangemanagementoption establece el control de intervalos de identidad.

Nota

auto_identity_range ha quedado en desuso y solo se proporciona por compatibilidad con versiones anteriores. Debe usar identityrangemanagementoption para especificar opciones de administración de intervalos de identidad. Para más información, vea Replicar columnas de identidad.

[ @pub_identity_range = ] pub_identity_rangeControla el tamaño del intervalo en el Publisher si el artículo tiene identityrangemanagementoption establecido en auto o auto_identity_range establecido en true. pub_identity_range es bigint, con un valor predeterminado de NULL. No se admite para publicadores de Oracle.

[ @identity_range = ] identity_rangeControla 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 bigint, con un valor predeterminado de NULL. Se usa cuando auto_identity_range se establece en true. No se admite para 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 usa el porcentaje de valores especificado en threshold, el Agente de distribución crea un nuevo intervalo de identidad. threshold es bigint, con un valor predeterminado de NULL. Se usa cuando identityrangemanagementoption se establece en auto o auto_identity_range se establece en true. No se admite para 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 un poco, con un valor predeterminado de 0.

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

1 especifica que agregar un artículo puede hacer que la instantánea no sea válida y, si existen suscripciones que requerirían una nueva instantánea, concede permiso para que la instantánea existente se marque como obsoleta y se genere una nueva instantánea.

[ @use_default_datatypes = ] use_default_datatypesIndica si se usan las asignaciones de tipos de datos de columna predeterminadas al publicar un artículo desde una instancia de Oracle Publisher. use_default_datatypes es bit, con un valor predeterminado de 1.

1 = se usan las 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_articleview no llama a sp_addarticle.

Cuando use_default_datatypes se establece en 0, debe ejecutar una sp_changearticlecolumndatatype para cada asignación de columna que se va a cambiar del valor predeterminado. Una vez definidas todas las asignaciones de columnas personalizadas, debe ejecutar sp_articleview.

Nota

Este parámetro solo debe utilizarse en publicadores de Oracle. Establecer use_default_datatypes en 0 para un Publisher genera SQL Server un error.

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

Valor Descripción
Ninguna La replicación no realiza una administración de intervalos de identidad explícita. Se recomienda esta opción solo por compatibilidad con las versiones anteriores de SQL Server. No se permite en la replicación del mismo nivel.
Manual Marca la columna de identidad utilizando NOT FOR REPLICATION para habilitar la administración manual de intervalos de identidad.
auto Especifica la administración automática de intervalos de identidad.
NULL (valor predeterminado) El valor predeterminado es none cuando el valor de auto_identity_range no es true. El valor predeterminado es manual en una topología punto a punto predeterminada (auto_identity_range se omite).

Por compatibilidad con versiones anteriores, cuando el valor de identityrangemanagementoption es NULL, se comprueba auto_identity_range valor de . Sin embargo, cuando el valor de identityrangemanagementoption no es NULL, el valor de auto_identity_range se omite.

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

[ @publisher = ] 'publisher'Especifica un valor que SQL Server no Publisher. publisher es sysname, con un valor predeterminado de NULL.

Nota

no se debe usar el publicador al agregar un artículo a un SQL Server Publisher.

[ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' Es si se ejecutan desencadenadores de usuario replicados cuando se aplica la instantánea inicial. fire_triggers_on_snapshot es nvarchar(5), con un valor predeterminado de FALSE. True significa que los desencadenadores de usuario en una tabla replicada se ejecutan cuando se aplica la instantánea. Para que los desencadenadores se repliquen, el valor de máscara de bits schema_option debe incluir el valor 0x100.

Valores de código de retorno

0 (correcto) o 1 (error)

Observaciones

sp_addarticle se usa en la replicación de instantáneas o en la replicación transaccional.

De forma predeterminada, la replicación no publica columnas en la tabla de origen cuando el tipo de datos de columna no se admite en la replicación. Si necesita publicar este tipo de columna, debe ejecutar sp_articlecolumn para agregar la columna.

Al agregar un artículo a una publicación que admite la replicación transaccional 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 estado.

  • 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 un valor manual para identityrangemanagementoption.

  • Si existe una columna de marca de tiempo en la tabla, debe incluir 0x08 en schema_option replicar la columna como marca de tiempo.

  • No se puede SQL un valor de ins_cmd , upd_cmd y del_cmd.

Para obtener más información, consulte Peer-to-Peer Transactional Replication.

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 se establece en true, sp_addarticle aplaza la creación de la vista hasta que se llame a sp_articleview (después de agregar el último sp_articlecolumn).

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

Al replicar en un suscriptor que no es una instancia de (replicación heterogéneo), solo se admiten instrucciones para los comandos SQL Server Transact-SQL INSERT, UPDATE y DELETE.

Cuando el agente de registro del LOG se está ejecutando, al agregar un artículo a una publicación punto a punto se puede producir un interbloqueo entre el agente de registro del LOG y el proceso que agrega el artículo. Para evitar este problema, antes de agregar un artículo a la publicación punto a punto, use el Monitor de replicación para detener el agente de registro del LOG en el nodo donde se agrega el artículo. Reinicie el agente de registro del LOG después de agregar el artículo.

Al establecer o , la propagación de comandos UPDATE también puede verse afectada por no enviar esos comandos cuando se produce @del_cmd = 'NONE' @ins_cmd = 'NONE' una actualización limitada. (Una actualización enlazada es el tipo de instrucción UPDATE del publicador que se replica como un par DELETE/INSERT en el suscriptor).

Opciones de esquema predeterminadas

En esta tabla se describe el valor predeterminado establecido por la replicación si el usuario no especifica schema_options, donde este valor depende del tipo de replicación (que se muestra en la parte superior) y del tipo de artículo (que se muestra en la primera columna).

Tipo de artículo Replicación transaccional Replicación de instantáneas
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
serializable proc exec 0x01 0x01
view schema only 0x01 0x01

Nota

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

Opciones de esquema válidas

En esta tabla se describen los valores permitidos de schema_option según el tipo de replicación (que se muestra en la parte superior) y el tipo de artículo (que se muestra en la primera columna).

Tipo de artículo Replicación transaccional Replicación de instantáneas
logbased Todas las opciones Todas las opciones, 0x02
logbased manualfilter Todas las opciones Todas las opciones, 0x02
logbased manualview Todas las opciones Todas las opciones, 0x02
indexed view logbased Todas las opciones Todas las opciones, 0x02
indexed view logbased manualfilter Todas las opciones Todas las opciones, 0x02
indexed view logbased manualview Todas las opciones Todas las opciones, 0x02
indexed view logbase manualboth Todas las opciones Todas las opciones, 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
serializable 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, schema_option valores de 0x8000 y 0x80 deben estar habilitados. Los valores schema_option admitidos para publicaciones que no son SQL Server de son: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000, 0x4000 y 0X8000.

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

Permisos

Solo los miembros del rol fijo de servidor sysadmin o db_owner rol fijo de base de datos pueden ejecutar sp_addarticle.

Consulte también

Define an Article
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 replicación (Transact-SQL)
Publicar datos y objetos de base de datos