sp_addarticle (Transact-SQL)
Crea un artículo y lo agrega a una publicación. Este procedimiento almacenado se ejecuta en el publicador en la base de datos de publicación.
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 de tipo sysname y no tiene 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 valor predeterminado.[ @source_table = ] 'source_table'
Este parámetro está en desuso; utilice 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 del destino (suscripción), si es diferente de source_table o del procedimiento almacenado. destination_table es de tipo sysname, con el valor predeterminado de NULL, que indica 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 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 admiten 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 sysname, y puede ser uno de los siguientes valores.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 se admite para los 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 para los 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 para los 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 para los 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 (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 para los 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 para los 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 para los publicadores de Oracle.
proc exec
Replica la ejecución del procedimiento almacenado a todos los suscriptores del artículo. No se admite para los 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 Publicar 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 se admite para los 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 se admite para los 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 se admite para los 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 de tipo nvarchar(386) y su valor predeterminado es NULL. sp_articleview y sp_articlefilter se deben ejecutar manualmente para crear la vista y el procedimiento almacenado del 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 comando de replicación utilizado al replicar inserciones para este artículo. ins_cmd es nvarchar(255), y puede ser uno de los siguientes valores.Valor
Descripción
NONE
No se realiza 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 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_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 replicación 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 comando de replicación utilizado al replicar eliminaciones para este artículo. del_cmd es nvarchar(255), y puede ser uno de los siguientes valores.Valor
Descripción
NONE
No se realiza ninguna acción.
CALL sp_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 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_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 replicación 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 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 obtener más información, vea Especificar cómo se propagan los cambios para los artículos transaccionales.
[ @upd_cmd =] 'upd_cmd'
Es el comando de replicación utilizado al replicar actualizaciones para este artículo. upd_cmd es nvarchar(255), y puede ser uno de los siguientes valores.Valor
Descripción
NONE
No se realiza 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 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_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 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_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 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 (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 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_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 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_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 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 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 un script opcional del esquema del artículo que se utiliza 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 del 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 cuando se aplica la instantánea para este artículo. pre_creation_cmd es nvarchar(10), y puede ser uno de los siguientes valores.Valor
Descripción
ninguno
No usa ningún comando.
eliminar
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 (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 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 del esquema para el artículo dado. schema_option es de tipo binary(8), y puede ser el producto | (operación OR bit a bit) 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 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 replicación.
Valor
Descripción
0x00
Deshabilita el scripting del Agente de instantáneas y utiliza 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
Replica columnas timestamp. Si no está establecido, las columnas timestamp se replican como binary.
0x10
Genera el índice clúster correspondiente. Aunque esta opción no esté establecida, se generarán índices relacionados con claves principales y restricciones UNIQUE si ya están definidos en una tabla publicada.
0x20
Convierte los tipos de datos definidos por el usuario (UDT) en tipos de datos base en el suscriptor. Esta opción no se puede utilizar si existe una restricción CHECK o DEFAULT en una columna UDT, si una columna UDT forma parte de la clave principal o si una columna calculada hace referencia a una columna UDT. No es compatible con publicadores de Oracle.
0x40
Genera los índices no clúster correspondientes. Aunque esta opción no esté establecida, se generarán índices relacionados con claves principales y restricciones UNIQUE si ya están definidos en una tabla publicada.
0x80
Replica las restricciones de clave principal. También se replican los índices relacionados con la restricción, aunque no estén habilitadas las opciones 0x10 y 0x40.
0x100
Replica los desencadenadores de usuario en un artículo de tabla, si se han definido. No es compatible con 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 es compatible con publicadores de Oracle.
0x400
Replica las restricciones CHECK. No es compatible con publicadores de Oracle.
0x800
Replica los valores predeterminados. No es compatible con publicadores de Oracle.
0x1000
Replica la intercalación de columna.
[!NOTA]
Esta opción debe establecerse en publicadores de Oracle para habilitar las comparaciones con distinción de mayúsculas y minúsculas.
0x2000
Replica las propiedades extendidas asociadas con el objeto de origen del artículo publicado. No es compatible con publicadores de Oracle.
0x4000
Replica las restricciones UNIQUE. También se replican los índices relacionados con la restricción, aunque no estén habilitadas las opciones 0x10 y 0x40.
0x8000
Esta opción no es válida para publicadores de SQL Server 2005.
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 a ntext en el suscriptor.
0x20000000
Convierte los tipos de datos de objetos grandes (nvarchar(max), varchar(max) y varbinary(max)) introducidos en SQL Server 2005 en tipos de datos admitidos en SQL Server 2000.
0x40000000
Replica permisos.
0x80000000
Intenta quitar dependencias a objetos que no forman parte de la publicación.
0x100000000
Use esta opción para replicar el atributo FILESTREAM si se especifica en columnas varbinary(max). No especifique esta opción si replica tablas en suscriptores de SQL Server 2005. La replicación de tablas que incluyen columnas FILESTREAM en suscriptores de SQL Server 2000 no se admite, independientemente de la configuración de esta opción de esquema.
Vea la opción relacionada 0x800000000.
0x200000000
Convierte los tipos de datos de fecha y hora (date, time, datetimeoffset y datetime2) introducidos en SQL Server 2008 en tipos de datos admitidos en versiones anteriores de SQL Server.
0x400000000
Replica la opción de compresión para los datos y los índices. Para obtener más información, vea Compresión de datos.
0x800000000
Establezca esta opción para almacenar los datos de FILESTREAM en su propio grupo de archivos en el suscriptor. Si no se establece esta opción, los datos 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) con más de 8.000 bytes en varbinary(max) para que las columnas de tipo UDT se puedan replicar en suscriptores que ejecutan SQL Server 2005.
0x2000000000
Convierte el tipo de datos hierarchyid en varbinary(max) para que las columnas de tipo hierarchyid se puedan replicar en suscriptores que ejecutan SQL Server 2005. Para obtener más información sobre cómo usar columnas hierarchyid en tablas replicadas, vea hierarchyid (Transact-SQL).
0x4000000000
Replica los índices filtrados de la tabla. Para obtener más información sobre los índices filtrados, vea 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.
0x10000000000
Replica índices en columnas de tipo geography y geometry.
0x20000000000
Replica el atributo SPARSE para las columnas. Para obtener más información acerca de este atributo, vea Usar columnas dispersas.
NULL
La replicación establece automáticamente schema_option en un valor predeterminado que 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 de publicaciones que no son de SQL Server es 0x050D3.
No todos los valores de schema_option son válidos para todos los tipos de replicación y de artículo. La tabla Opciones de esquema válidas de la sección Notas muestra las opciones de esquema válidas que se pueden elegir según la combinación del tipo de artículo y de replicación.
[ @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 solo 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, así como opciones adicionales sobre cómo se propagan los cambios. status es de tipo tinyint, y puede ser el producto | (operación OR bit a bit) 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 compatible. 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 ha definido ninguna propiedad adicional.
[ @source_owner =] 'source_owner'
Es el nombre del propietario del objeto de origen. source_owner es de tipo sysname y su valor predeterminado es NULL. En los publicadores de Oracle, debe especificarse source_owner.[ @sync_object_owner =] 'sync_object_owner'
Es el nombre del 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 replicación transaccional o de instantáneas, vea Publicar datos y objetos de base de datos.[ @artid = ] article_ID OUTPUT
Es el id. del nuevo artículo. article_ID es de tipo int, con un valor predeterminado de NULL, y es un parámetro OUTPUT.[ @auto_identity_range = ] 'auto_identity_range'
Habilita o deshabilita el control automático de un rango de identidad en una publicación en el momento en que se crea. 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 (valor predeterminado)
El parámetro identityrangemanagementoption establece la administración de intervalos de identidad.
[!NOTA]
El parámetro auto_identity_range ya no se utiliza y se mantiene solamente por razones de 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 rango 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 rango 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 es compatible con 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. Si se especifica el porcentaje de valores especificados en threshold, el Agente de distribución crea un nuevo rango 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_snapshotes 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 solo 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 controla el rango de identidad para el artículo. identityrangemanagementoption es nvarchar(10), y puede ser uno de los siguientes valores.Valor
Descripción
none
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).
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.
[ @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 se ejecutan desencadenadores de usuario replicados al aplicar la instantánea inicial. fire_triggers_on_snapshot es de tipo nvarchar(5) y su valor predeterminado es FALSE. true indica 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.
Valores de código de retorno
0 (correcto) o 1 (error)
Comentarios
sp_addarticle se utiliza 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 columnas, 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 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 Replicación transaccional 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.
Al replicar en un suscriptor que no es una instancia de SQL Server (replicación heterogénea), solo se admiten las instrucciones Transact-SQL para los comandos 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 @del\_cmd = 'NONE' o @ins\_cmd = 'NONE', la propagación de comandos UPDATE también podría verse afectada no enviando esos comandos cuando se produce una actualización enlazada. (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 que establece la replicación si el usuario no especifica schema_options; este valor depende del 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 |
Tipo de replicación |
|
---|---|---|
|
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 |
serializable 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 replicación (valores de la parte superior) y el tipo de artículo (valores de la primera columna).
Tipo de artículo |
Tipo de replicación |
|
---|---|---|
|
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, and 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, and 0x80000000 |
serializable proc exec |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, and 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, and 0x80000000 |
proc schema only |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, and 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, and 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, and 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000, and 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 schema_option admitidos para las publicaciones no SQL Server 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 del rol fijo de base de datos db_owner pueden ejecutar sp_addarticle.
Vea también
Referencia
sp_articlecolumn (Transact-SQL)
sp_articlefilter (Transact-SQL)
sp_changearticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)
Procedimientos almacenados de replicación (Transact-SQL)