sp_changearticle (Transact-SQL)
Se aplica a: SQL Server Azure SQL Managed Instance
Cambia las propiedades de un artículo en una publicación transaccional o de instantáneas. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_changearticle
[ [ @publication = ] N'publication' ]
[ , [ @article = ] N'article' ]
[ , [ @property = ] N'property' ]
[ , [ @value = ] N'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] N'publisher' ]
[ ; ]
Argumentos
[ @publication = ] N'publication'
Nombre de la publicación que contiene el artículo. @publication es sysname, con un valor predeterminado de NULL
.
[ @article = ] N'article'
Nombre del artículo cuya propiedad se va a cambiar. @article es sysname, con un valor predeterminado de NULL
.
[ @property = ] N'property'
Propiedad de artículo que se va a cambiar. @property es nvarchar(100), con un valor predeterminado de NULL
.
[ @value = ] N'value'
Nuevo valor de la propiedad article. @value es nvarchar(255), con un valor predeterminado de NULL
.
En esta tabla se describen las propiedades de los artículos y los valores de esas propiedades.
Propiedad | Valores | Descripción |
---|---|---|
creation_script |
Ruta de acceso y nombre de un script de esquema del artículo que se utiliza para crear tablas de destino. El valor predeterminado es NULL . |
|
del_cmd |
DELETE instrucción que se va a ejecutar; de lo contrario, se construye a partir del registro. |
|
description |
Nueva entrada descriptiva del artículo. | |
dest_object |
Se proporciona para mantener la compatibilidad con versiones anteriores. Use dest_table . |
|
dest_table |
Nueva tabla de destino. | |
destination_owner |
Nombre del propietario del objeto de destino. | |
filter |
Nuevo procedimiento almacenado para filtrar la tabla (filtrado horizontal). El valor predeterminado es NULL . No se puede cambiar para las publicaciones en la replicación punto a punto. |
|
fire_triggers_on_snapshot |
true |
Los desencadenadores de usuario replicados se ejecutan cuando se aplica la instantánea inicial. Nota: Para que los desencadenadores se repliquen, el valor de máscara de bits de schema_option debe incluir el valor 0x100 . |
false |
Los desencadenadores de usuario replicados no se ejecutan cuando se aplica la instantánea inicial. | |
identity_range |
Controla el tamaño de los intervalos de identidad asignados en el suscriptor. No se admite para la replicación punto a punto. | |
ins_cmd |
INSERT instrucción que se va a ejecutar; de lo contrario, se construye a partir del registro. |
|
pre_creation_cmd |
Comando de creación previa que puede quitar, eliminar o truncar la tabla de destino antes de aplicar la sincronización. | |
none |
No usa un comando . | |
drop |
Quita la tabla de destino. | |
delete |
Elimina la tabla de destino. | |
truncate |
Trunca la tabla de destino. | |
pub_identity_range |
Controla el tamaño de los intervalos de identidad asignados en el suscriptor. No se admite para la replicación punto a punto. | |
schema_option |
Especifica el mapa de bits de la opción de generación del esquema para el artículo especificado. schema_option es binary(8). Para obtener más información, vea la sección Notas. |
|
0x00 |
Deshabilita el scripting del Agente de instantáneas. | |
0x01 |
Genera la creación del objeto (CREATE TABLE , CREATE PROCEDURE , etc.). |
|
0x02 |
Genera los procedimientos almacenados que propagan los cambios del artículo, si se han definido. | |
0x04 |
Las columnas de identidad se crean mediante la IDENTITY propiedad . |
|
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. | |
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 usar cuando hay una CHECK restricción 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. | |
0x80 |
Incluye la integridad referencial declarada para las claves principales. | |
0x100 |
Replica los desencadenadores de usuario en un artículo de tabla, si se han definido. | |
0x200 |
FOREIGN KEY Replica las restricciones. Si la tabla a la que se hace referencia no forma parte de una publicación, no se replican todas las FOREIGN KEY restricciones de una tabla publicada. |
|
0x400 |
CHECK Replica las restricciones. |
|
0x800 |
Replica los valores predeterminados. | |
0x1000 |
Replica la intercalación de columna. | |
0x2000 |
Replica las propiedades extendidas asociadas con el objeto de origen del artículo publicado. | |
0x4000 |
Replica las claves únicas si están definidas en un artículo de tabla. | |
0x8000 |
Replica la clave principal y las claves únicas en un artículo de tabla como restricciones mediante ALTER TABLE instrucciones .Nota: Esta opción está en desuso. Utilice 0x80 y 0x4000 en su lugar. |
|
0x10000 |
CHECK Replica las restricciones para NOT FOR REPLICATION que las restricciones no se apliquen durante la sincronización. |
|
0x20000 |
FOREIGN KEY Replica las restricciones para NOT FOR REPLICATION que las restricciones no se apliquen 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 tipos de datos de objetos grandes (nvarchar(max), varchar(max)y varbinary(max)) que se introdujeron en SQL Server 2005 (9.x) en tipos de datos que se admiten en SQL Server 2000 (8.x). | |
0x40000000 |
Replicación de permisos. | |
0x80000000 |
Intente quitar dependencias a cualquier objeto que no forme parte de la publicación. | |
0x100000000 |
Use esta opción para replicar el FILESTREAM atributo si se especifica en columnas varbinary(max). No especifique esta opción si va a replicar tablas en suscriptores de SQL Server 2005 (9.x). No se admite la replicación de tablas que tienen columnas FILESTREAM en suscriptores de SQL Server 2000 (8.x), independientemente de cómo se establezca esta opción de esquema.Consulte la opción 0x800000000 relacionada . |
|
0x200000000 |
Convierte los tipos de datos de fecha y hora (fecha, hora, datetimeoffset y datetime2) que se introdujeron en SQL Server 2008 (10.0.x) en tipos de datos compatibles con 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, consulte 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 FILESTREAM se almacenan en el grupo de archivos predeterminado. La replicación no crea grupos de archivos; Por lo 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. Consulte la opción 0x100000000 relacionada . |
|
0x1000000000 |
Convierte tipos definidos por el usuario (UDT) de Common Language Runtime (CLR) de 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 suscriptores que ejecutan SQL Server 2005 (9.x). Para obtener más información sobre cómo usar columnas hierarchyid en tablas replicadas, consulte referencia de método de tipo de datos hierarchyid. | |
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 SPARSE atributo para las columnas. Para obtener más información sobre este atributo, consulte Uso de 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 agrupado en un índice no clúster para artículos optimizados para memoria. | |
status |
Especifica el nuevo estado de la propiedad. | |
dts horizontal partitions |
Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada. | |
include column names |
Los nombres de columna se incluyen en la instrucción replicada INSERT . |
|
no column names |
Los nombres de columna no se incluyen en la instrucción replicada INSERT . |
|
no dts horizontal partitions |
La partición horizontal del artículo no está definida por una suscripción transformable. | |
none |
Borra todas las opciones de estado de la tabla sysarticles y marca el artículo como inactivo. | |
parameters |
Los cambios se propagan al suscriptor mediante comandos con parámetros. Es el valor predeterminado para los artículos nuevos. | |
string literals |
Los cambios se propagan al suscriptor mediante valores literales de cadena. | |
sync_object |
Nombre de la tabla o vista utilizada para generar un archivo de salida de sincronización. El valor predeterminado es NULL . No es compatible con publicadores de Oracle. |
|
tablespace |
Identifica el espacio de tablas utilizado por la tabla de registro de un artículo publicado desde una base de datos Oracle. Para más información, vea Manage Oracle Databases (Administrar bases de datos de Oracle). | |
threshold |
Valor de porcentaje que controla cuándo el Agente de distribución asigna un nuevo intervalo de identidad. No se admite para la replicación punto a punto. | |
type |
No es compatible con publicadores de Oracle. | |
logbased |
Artículo basado en registro. | |
logbased manualboth |
Artículo basado en registro con filtro manual y vista manual. Esta opción requiere que también establezca las sync_object propiedades y filter . No es compatible con publicadores de Oracle. |
|
logbased manualfilter |
Artículo basado en registro con filtro manual. Esta opción requiere que también establezca las sync_object propiedades y filter . No es compatible con publicadores de Oracle. |
|
logbased manualview |
Artículo basado en registro con vista manual. Esta opción requiere que también establezca la sync_object propiedad . No es compatible con publicadores de Oracle. |
|
indexed viewlogbased |
Artículo de vista indizada basado en registro. No es compatible con publicadores de Oracle. Para este tipo de artículo, la tabla base no tiene que publicarse por separado. | |
indexed viewlogbased manualboth |
Artículo de vista indizada basado en registro con filtro manual y vista manual. Esta opción requiere que también establezca las sync_object propiedades y filter . Para este tipo de artículo, la tabla base no tiene que publicarse por separado. No es compatible con publicadores de Oracle. |
|
indexed viewlogbased manualfilter |
Artículo de vista indizada basado en registro con filtro manual. Esta opción requiere que también establezca las sync_object propiedades y filter . Para este tipo de artículo, la tabla base no tiene que publicarse por separado. No es compatible con publicadores de Oracle. |
|
indexed viewlogbased manualview |
Artículo de vista indizada basado en registro con vista manual. Esta opción requiere que también establezca la sync_object propiedad . Para este tipo de artículo, la tabla base no tiene que publicarse por separado. No es compatible con publicadores de Oracle. |
|
upd_cmd |
UPDATE instrucción que se va a ejecutar; de lo contrario, se construye a partir del registro. |
|
NULL |
NULL |
Devuelve una lista con las propiedades del artículo que se pueden cambiar. |
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Confirma que la acción realizada por este procedimiento almacenado podría invalidar una instantánea existente. @force_invalidate_snapshot es bit, con un valor predeterminado de 0
.
0
especifica que los cambios realizados en el artículo no hacen que la instantánea no sea válida. Si el procedimiento almacenado detecta que el cambio requiere una nueva instantánea, se producirá un error y no se realizarán cambios.
1
especifica que los cambios realizados en el artículo pueden hacer que la instantánea no sea válida y, si hay suscripciones existentes 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.
Consulte la sección Comentarios de las propiedades que, cuando se cambian, requieren la generación de una nueva instantánea.
[ @force_reinit_subscription = ] force_reinit_subscription
Confirma que la acción realizada por este procedimiento almacenado puede requerir la reinicialización de las suscripciones existentes. @force_reinit_subscription es bit, con un valor predeterminado de 0
.
0
especifica que los cambios realizados en el artículo no hacen que se reinicialice la suscripción. Si el procedimiento almacenado detecta que el cambio requiere que se reinicializan las suscripciones existentes, se produce un error y no se realizan cambios.
1
especifica que los cambios realizados en el artículo hacen que las suscripciones existentes se reinicialicen y concede permiso para que se produzca la reinicialización de la suscripción.
Consulte la sección Comentarios de las propiedades que, cuando se cambian, requieren que se reinicialicen todas las suscripciones existentes.
[ @publisher = ] N'publisher'
Especifica un publicador que no es de SQL Server. @publisher es sysname, con un valor predeterminado de NULL
.
Nota:
Publisher no debe usarse al cambiar las propiedades de artículo en un publicador de SQL Server.
Valores de código de retorno
0
(correcto) o 1
(erróneo).
Comentarios
sp_changearticle
se usa en la replicación de instantáneas y la replicación transaccional.
Cuando un artículo pertenece a una publicación que admite la replicación transaccional punto a punto, solo puede cambiar las description
propiedades , ins_cmd
, upd_cmd
y del_cmd
.
El cambio de cualquiera de las siguientes propiedades requiere que se genere una nueva instantánea y debe especificar un valor de 1
para el parámetro @force_invalidate_snapshot :
del_cmd
dest_table
destination_owner
ins_cmd
pre_creation_cmd
schema_options
upd_cmd
Cambiar cualquiera de las siguientes propiedades requiere que se reinicialicen las suscripciones existentes y debe especificar un valor para 1
el parámetro @force_reinit_subscription .
del_cmd
dest_table
destination_owner
filter
ins_cmd
status
upd_cmd
Dentro de una publicación existente, puede usar sp_changearticle
para cambiar un artículo sin tener que quitar y volver a crear toda la publicación.
Nota:
Al cambiar el valor de schema_option
, el sistema no realiza una actualización bit a bit. Esto significa que, al establecer schema_option
con sp_changearticle
, es posible que la configuración de bits existente esté desactivada. Para conservar la configuración existente, debe realizar | (OR bit a bit) entre el valor que está estableciendo y el valor actual de schema_option
, que se puede determinar ejecutando sp_helparticle.
Opciones de esquema válidas
En la tabla siguiente se describen los valores permitidos de según el tipo de schema_option
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 | Tipo de replicación: instantánea |
---|---|---|
logbased |
Todas las opciones | Todas las opciones, pero 0x02 |
logbased manualfilter |
Todas las opciones | Todas las opciones, pero 0x02 |
logbased manualview |
Todas las opciones | Todas las opciones, pero 0x02 |
indexed view logbased |
Todas las opciones | Todas las opciones, pero 0x02 |
indexed view logbased manualfilter |
Todas las opciones | Todas las opciones, pero 0x02 |
indexed view logbased manualview |
Todas las opciones | Todas las opciones, pero 0x02 |
indexed view logbase manualboth |
Todas las opciones | Todas las opciones, pero 0x02 |
proc exec |
0x01 , 0x20 , 0x2000 , 0x400000 , , 0x2000000 0x800000 , 0x8000000 0x10000000 , , 0x20000000 , 0x40000000 , y0x80000000 |
0x01 , 0x20 , 0x2000 , 0x400000 , , 0x2000000 0x800000 , 0x8000000 0x10000000 , , 0x20000000 , 0x40000000 , y0x80000000 |
serializable proc exec |
0x01 , 0x20 , 0x2000 , 0x400000 , , 0x2000000 0x800000 , 0x8000000 0x10000000 , , 0x20000000 , 0x40000000 , y0x80000000 |
0x01 , 0x20 , 0x2000 , 0x400000 , , 0x2000000 0x800000 , 0x8000000 0x10000000 , , 0x20000000 , 0x40000000 , y0x80000000 |
proc schema only |
0x01 , 0x20 , 0x2000 , 0x400000 , , 0x2000000 0x800000 , 0x8000000 0x10000000 , , 0x20000000 , 0x40000000 , y0x80000000 |
0x01 , 0x20 , 0x2000 , 0x400000 , , 0x2000000 0x800000 , 0x8000000 0x10000000 , , 0x20000000 , 0x40000000 , y0x80000000 |
view schema only |
0x01 , 0x010 , 0x020 , 0x040 , , 0x2000 0x0100 , 0x40000 , 0x100000 0x800000 0x400000 0x2000000 0x200000 0x8000000 , , y 0x40000000 0x80000000 |
0x01 , 0x010 , 0x020 , 0x040 , , 0x2000 0x0100 , 0x40000 , 0x100000 0x800000 0x400000 0x2000000 0x200000 0x8000000 , , y 0x40000000 0x80000000 |
func schema only |
0x01 , 0x20 , 0x2000 , 0x400000 , , 0x2000000 0x800000 , 0x8000000 0x10000000 , , 0x20000000 , 0x40000000 , y0x80000000 |
0x01 , 0x20 , 0x2000 , 0x400000 , , 0x2000000 0x800000 , 0x8000000 0x10000000 , , 0x20000000 , 0x40000000 , y0x80000000 |
indexed view schema only |
0x01 , 0x010 , 0x020 , 0x040 , , 0x2000 0x0100 , 0x40000 , 0x100000 0x800000 0x400000 0x2000000 0x200000 0x8000000 , , y 0x40000000 0x80000000 |
0x01 , 0x010 , 0x020 , 0x040 , , 0x2000 0x0100 , 0x40000 , 0x100000 0x800000 0x400000 0x2000000 0x200000 0x8000000 , , y 0x40000000 0x80000000 |
Nota:
Para las publicaciones de actualización en cola, el schema_option
valor de 0x80
debe estar habilitado. Los valores admitidos schema_option
para publicaciones que no son de SQL Server son: 0x01
, 0x02
, 0x10
, 0x40
, 0x80
y 0x1000
0x4000
.
Ejemplos
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));
-- Change the schema options to replicate schema with XML.
USE [AdventureWorks2022]
EXEC sp_changearticle
@publication = @publication,
@article = @article,
@property = N'schema_option',
@value = @option,
@force_invalidate_snapshot = 1;
GO
Permisos
Solo los miembros del rol fijo de servidor sysadmin o db_owner rol fijo de base de datos pueden ejecutar sp_changearticle
.