sp_changearticle (Transact-SQL)
Se aplica a: SQL Server Azure SQL Instancia administrada
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= ] 'publication' ]
[ , [ @article= ] 'article' ]
[ , [ @property= ] 'property' ]
[ , [ @value= ] 'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] 'publisher' ]
Argumentos
[ @publication = ] 'publication'
Es el nombre de la publicación que contiene el artículo. publication es sysname, con un valor predeterminado de NULL.
[ @article = ] 'article'
Es el nombre del artículo cuya propiedad se va a cambiar. article es sysname, con un valor predeterminado de NULL.
[ @property = ] 'property'
Es una propiedad de artículo que se va a cambiar. property es nvarchar(100).
[ @value = ] 'value'
Es el nuevo valor de la propiedad article. value es nvarchar(255).
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 de es NULL. | |
del_cmd | Instrucción DELETE que se va a ejecutar; de lo contrario, se genera a partir del registro. | |
descripción | 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 de es NULL. No se puede cambiar para las publicaciones de 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 | Instrucción INSERT que se ejecuta; de lo contrario, se crea a partir del registro. | |
pre_creation_cmd | Comando de creación previa que puede quitar, eliminar o truncar la tabla de destino antes de que se aplique la sincronización. | |
none | No usa ningún comando. | |
anular | Quita la tabla de destino. | |
eliminación | 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 Comentarios más adelante en este tema. | |
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 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. | |
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. | |
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 | Replica restricciones FOREIGN KEY. Si la tabla a la que se hace referencia no forma parte de una publicación, no se replica ninguna restricción FOREIGN KEY en una tabla publicada. | |
0x400 | Replica las restricciones CHECK. | |
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 de un artículo de tabla como restricciones mediante instrucciones ALTER TABLE. Nota: Esta opción ha quedado en desuso. Use 0x80 y 0x4000 en su lugar. |
|
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 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 los objetos que no formen 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 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 relacionada 0x800000000. |
|
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 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. Consulte la opción relacionada 0x100000000. |
|
0x1000000000 | Convierte los 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 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 agrupado en un índice no clúster para artículos optimizados para memoria. | |
status | Especifica el nuevo estado de la propiedad. | |
particiones horizontales dts | Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada. | |
incluir nombres de columna | Los nombres de columnas se incluyen en la instrucción INSERT replicada. | |
sin nombres de columna | Los nombres de columnas no se incluyen en la instrucción INSERT replicada. | |
sin particiones horizontales dts | La partición horizontal del artículo no se define mediante 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. | |
literales de cadena | 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 de 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 se establezcan las propiedades de sync_object y filtro . No es compatible con publicadores de Oracle. | |
logbased manualfilter | Artículo basado en registro con filtro manual. Esta opción requiere que también se establezcan las propiedades de sync_object y filtro . No es compatible con publicadores de Oracle. | |
logbased manualview | Artículo basado en registro con vista manual. Esta opción requiere que también se establezca la propiedad sync_object . No es compatible con publicadores de Oracle. | |
viewlogbased indexed | 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 viewlogbased manualboth | Artículo de vista indizada basado en registro con filtro manual y vista manual. Esta opción requiere que también se establezcan las propiedades de sync_object y filtro . En este tipo de artículo, no es necesario que la tabla base se publique por separado. No es compatible con publicadores de Oracle. | |
viewlogbased manualfilter indexed viewlogbasedfilter | Artículo de vista indizada basado en registro con filtro manual. Esta opción requiere que también se establezcan las propiedades de sync_object y filtro . En este tipo de artículo, no es necesario que la tabla base se publique por separado. No es compatible con publicadores de Oracle. | |
viewlogbased manualview indexed | Artículo de vista indizada basado en registro con vista manual. Esta opción requiere que también se establezca la propiedad sync_object . En este tipo de artículo, no es necesario que la tabla base se publique por separado. No es compatible con publicadores de Oracle. | |
upd_cmd | Instrucción UPDATE que se va a ejecutar; de lo contrario, se genera 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 puede invalidar una instantánea existente. force_invalidate_snapshot es un poco, 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.
Vea en la sección de Notas las propiedades que, si se cambian, requieren que se genere una instantánea nueva.
[ @force_reinit_subscription = ]force_reinit_subscription_
Confirma que la acción realizada por este procedimiento almacenado puede requerir que se reinicialicen las suscripciones existentes. force_reinit_subscription es un 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 la reinicialización de las suscripciones existentes, se producirá un error y no se realizarán 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.
Vea en la sección de Notas las propiedades que, si se cambian, requieren que se reinicialicen todas las suscripciones existentes.
[ @publisher = ] '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 los artículos en un publicador de SQL Server.
Valores de código de retorno
0 (correcto) o 1 (error)
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 se pueden cambiar las propiedades de descripción, ins_cmd, upd_cmd y del_cmd .
Cambiar 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 de 1 para 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 mediante 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 schema_option en función 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 | 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 |
vista manual de logbased de vista indexada | Todas las opciones | Todas las opciones, pero 0x02 |
manual de logbase de vistas indexadas | Todas las opciones | Todas las opciones, pero 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 |
solo esquema de procedimiento | 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 y 0x80000000 | 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 y 0x80000000 |
ver solo esquema | 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 |
solo func schema | 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 y 0x80000000 | 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 y 0x80000000 |
esquema de vista indizada solo | 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:
En el caso de las publicaciones de actualización en cola, el valor schema_option de 0x80 debe estar habilitado. Los valores de schema_option admitidos para publicaciones que no son de SQL Server son: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000 y 0x4000.
Ejemplo
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.
Consulte también
er y modificar las propiedades de un artículo
Cambiar las propiedades de la publicación y de los artículos
sp_addarticle (Transact-SQL)
sp_articlecolumn (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)
Comentarios
https://aka.ms/ContentUserFeedback.
Proximamente: Ao longo de 2024, retiraremos gradualmente GitHub Issues como mecanismo de comentarios sobre o contido e substituirémolo por un novo sistema de comentarios. Para obter máis información, consulte:Enviar e ver os comentarios