sp_changemergearticle (Transact-SQL)
Se aplica a: SQL Server
Cambia las propiedades de un artículo de mezcla. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_changemergearticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @property = ] N'property' ]
[ , [ @value = ] N'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]
Argumentos
[ @publication = ] N'publication'
Nombre de la publicación en la que existe el artículo. @publication es sysname, sin ningún valor predeterminado.
[ @article = ] N'article'
Nombre del artículo que se va a cambiar. @article es sysname, sin ningún valor predeterminado.
[ @property = ] N'property'
Propiedad que se va a cambiar para el artículo y la publicación especificados. @property es sysname y puede ser uno de los valores enumerados en la tabla siguiente.
[ @value = ] N'value'
El nuevo valor de la propiedad especificada. @value es nvarchar(2000) y puede ser uno de los valores enumerados en la tabla siguiente.
En esta tabla se describen las propiedades de los artículos y los valores de esas propiedades.
Propiedad | Valores | Descripción |
---|---|---|
allow_interactive_resolver |
true |
Habilita el uso de un solucionador interactivo para el artículo. |
false |
Deshabilita el uso de un solucionador interactivo para el artículo. | |
article_resolver |
Solucionador personalizado para el artículo. Solo se aplica a un artículo de tabla. | |
check_permissions (mapa de bits) |
0x00 |
No se comprueban los permisos de nivel de tabla. |
0x10 |
Los permisos de tabla se comprueban en el publicador antes de que las instrucciones INSERT realizadas en el suscriptor se apliquen en el publicador. | |
0x20 |
Los permisos de tabla se comprueban en el publicador antes de que las instrucciones UPDATE realizadas en el suscriptor se apliquen en el publicador. | |
0x40 |
Los permisos de tabla se comprueban en el publicador antes de que las instrucciones DELETE realizadas en el suscriptor se apliquen en el publicador. | |
column_tracking |
true |
Activa el seguimiento por columna. Solo se aplica a un artículo de tabla. Nota: No se puede usar el seguimiento de nivel de columna al publicar tablas con más de 246 columnas. |
false |
Desactiva el seguimiento por columna y deja la detección de conflictos a nivel de fila. Solo se aplica a un artículo de tabla. | |
compensate_for_errors |
true |
Las acciones de compensación se ejecutan cuando se producen errores durante la sincronización. Para obtener más información, consulte sp_addmergearticle. |
false |
No se realizan acciones de compensación, que es el comportamiento predeterminado. Para obtener más información, consulte sp_addmergearticle. Importante: Aunque los datos de las filas afectadas podrían parecer estar fuera de la convergencia, en cuanto se solucionan los errores, se pueden aplicar cambios y los datos convergen. Si la tabla de origen de un artículo ya está publicada en otra publicación, el valor de compensate_for_errors debe ser el mismo para ambos artículos. |
|
creation_script |
Ruta de acceso y 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. | |
delete_tracking |
true |
Las instrucciones DELETE se replican; éste es el comportamiento predeterminado. |
false |
Las instrucciones DELETE no se replican. Importante: Es necesario quitar manualmente la configuración delete_tracking de los false resultados en la no convergencia y las filas eliminadas. |
|
description |
Entrada descriptiva del artículo. | |
destination_owner |
Nombre del propietario del objeto en la base de datos de suscripciones, si no es dbo. | |
identity_range |
bigint que especifica el tamaño del intervalo que se va a usar al asignar nuevos valores de identidad si el artículo ha identityrangemanagementoption establecido auto en o auto_identity_range establecido en true . Solamente se aplica en un artículo de la tabla. Para obtener más información, consulte la sección "Replicación de mezcla" de Replicar columnas de identidad. |
|
identityrangemanagementoption |
manual |
Deshabilita la administración automática de intervalos de identidad. Marca las columnas de identidad utilizando NOT FOR REPLICATION para habilitar la administración manual de intervalos de identidad. Para más información, vea Replicar columnas de identidad. |
none |
Deshabilita toda la administración de intervalos de identidad. | |
logical_record_level_conflict_detection |
true |
Se detecta un conflicto si se realizan cambios en cualquier parte del registro lógico. Requiere que logical_record_level_conflict_resolution se establezca en true . |
false |
La detección de conflictos predeterminada se usa según lo especificado por column_tracking . |
|
logical_record_level_conflict_resolution |
true |
Todo el registro lógico ganador reemplaza el registro lógico perdedor. |
false |
Las filas ganadoras no están restringidas al registro lógico. | |
partition_options |
0 |
El filtrado del artículo es estático o no produce un subconjunto único de datos para cada partición, es decir, una partición "superpuesta". |
1 |
Las particiones se superponen y las actualizaciones de DML realizadas en el suscriptor no pueden cambiar la partición a la que pertenece una fila. | |
2 |
El filtro para el artículo produce particiones no superpuestas, pero varios suscriptores pueden recibir la misma partición. | |
3 |
El filtro para el artículo produce particiones no superpuestas que son exclusivas para cada suscripción. Nota: Si especifica un valor de 3 para partition_options , solo puede haber una suscripción única para cada partición de datos de ese artículo. Si se crea una segunda suscripción, en la que el criterio de filtrado de la nueva suscripción se resuelve en la misma partición que la suscripción existente, se quita la suscripción existente. |
|
pre_creation_command |
none |
Si la tabla ya existe en el suscriptor, no se lleva a cabo ninguna acción. |
delete |
Emite una eliminación basada en la cláusula WHERE del filtro de subconjunto. | |
drop |
Quita la tabla antes de volver a crearla. | |
truncate |
Trunca la tabla de destino. | |
processing_order |
int que indica el orden de procesamiento de artículos en una publicación de combinación. | |
pub_identity_range |
bigint que especifica el tamaño de intervalo asignado a un suscriptor con una suscripción de servidor si el artículo ha identityrangemanagementoption establecido auto en o auto_identity_range establecido en true . Este rango de identidad se reserva para que un suscriptor de republicación pueda realizar asignaciones a sus propios suscriptores. Solamente se aplica en un artículo de la tabla. Para obtener más información, consulte la sección "Replicación de mezcla" de Replicar columnas de identidad. |
|
published_in_tran_pub |
true |
El artículo también está publicado en una publicación transaccional. |
false |
El artículo tampoco se publica en una publicación transaccional. | |
resolver_info |
Se utiliza para especificar información adicional necesaria para un solucionador personalizado. Algunos de los solucionadores de Microsoft requieren una columna proporcionada como entrada para el solucionador. resolver_info es nvarchar(255), con un valor predeterminado de NULL . Para obtener más información, vea Conflictos de replicación de mezcla avanzada: solucionadores basados en COM. |
|
schema_option (mapa de bits) |
Para obtener más información, vea la sección Notas. | |
0x00 |
Deshabilita el scripting mediante el Agente de instantáneas y usa el script proporcionado en creation_script . |
|
0x01 |
Genera el script de creación del objeto (CREATE TABLE, CREATE PROCEDURE, etc.). | |
0x10 |
Genera el índice clúster correspondiente. | |
0x20 |
Convierte los tipos de datos definidos por el usuario en tipos de datos base en el suscriptor. Esta opción no se puede usar cuando hay una restricción CHECK o DEFAULT en una columna de tipo definido por el usuario (UDT), si una columna UDT forma parte de la clave principal o si una columna calculada hace referencia a una columna UDT. | |
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 replican todas las restricciones FOREIGN KEY de 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 |
Genera instrucciones ALTER TABLE al incluir restricciones en scripting. | |
0x10000 |
Replica las restricciones CHECK como NOT FOR REPLICATION para que las restricciones no se apliquen durante la sincronización. | |
0x20000 |
Replica las restricciones FOREIGN KEY como NOT FOR REPLICATION para 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 |
Replica enlaces predeterminados | |
0x800000 |
Replica los enlaces de reglas. | |
0x1000000 |
Replica el í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 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 0x800000000 relacionada . |
|
0x200000000 |
Convierte los tipos de datos de fecha y hora (fecha, hora, datetimeoffset y datetime2) que se presentan 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 los tipos definidos por el usuario (UDT) de Common Language Runtime (CLR) 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. | |
NULL |
El sistema genera automáticamente una opción de esquema válida para el artículo. | |
status |
active |
Se ejecuta el script inicial de proceso para publicar la tabla. |
unsynced |
El script de procesos inicial para publicar la tabla se ejecuta la próxima vez que se ejecute el Agente de instantáneas. | |
stream_blob_columns |
true |
Se utiliza una optimización del flujo de datos al replicar columnas de objetos binarios grandes. No obstante, ciertas funciones de la replicación de mezcla, como los registros lógicos, pueden impedir que se utilice la optimización de flujos. stream_blob_columns se establece en true cuando FILESTREAM está habilitado. Esto permite que la replicación de datos FILESTREAM se realice de forma óptima y que se reduzca el uso de memoria. Para forzar que los artículos de la tabla FILESTREAM no usen el streaming de blobs, establezca en stream_blob_columns false.Importante: Habilitar esta optimización de memoria podría afectar al rendimiento del Agente de mezcla durante la sincronización. Esta opción solo se debe utilizar al replicar columnas que contienen megabytes de datos. |
false |
La optimización no se usa al replicar columnas de objetos binarios grandes. | |
subscriber_upload_options |
0 |
No existen restricciones en actualizaciones realizadas en el suscriptor con una suscripción de cliente; los cambios se cargan en el publicador. Cambiar esta propiedad puede requerir que se reinicialicen los suscriptores existentes. |
1 |
Los cambios se permiten en un suscriptor con una suscripción de cliente, pero no se cargan en el publicador. | |
2 |
Los cambios no se permiten en un suscriptor con una suscripción de cliente. | |
subset_filterclause |
Cláusula WHERE que especifica el filtrado horizontal. Solo se aplica a un artículo de tabla. Importante: Por motivos de rendimiento, se recomienda no aplicar funciones a nombres de columna en cláusulas de filtro de fila con parámetros, como LEFT([MyColumn]) = SUSER_SNAME() . Si usa HOST_NAME en una cláusula de filtro e invalida el valor de HOST_NAME, es posible que tenga que convertir tipos de datos mediante CONVERT. Para obtener más información sobre los procedimientos recomendados para este caso, vea la sección "Invalidar el valor de HOST_NAME() en Filtros con parámetros: filtros de fila con parámetros. |
|
threshold |
Valor porcentual usado para suscriptores que ejecutan SQL Server Compact o versiones anteriores de SQL Server. threshold controla cuando el Agente de mezcla asigna un nuevo intervalo de identidades. Si se utiliza el porcentaje de valores especificado en el umbral, el Agente de mezcla crea un nuevo intervalo de identidad. Se usa cuando identityrangemanagementoption se establece auto en o auto_identity_range se establece en true . Solamente se aplica en un artículo de la tabla. Para obtener más información, consulte la sección "Replicación de mezcla" de Replicar columnas de identidad. |
|
verify_resolver_signature |
1 |
Se comprueba la firma digital en un solucionador personalizado para determinar si procede de un origen de confianza. |
0 |
No se comprueba la firma digital en un solucionador personalizado para determinar si procede de un origen de confianza. | |
NULL (valor predeterminado) |
Devuelve la lista de valores admitidos para @property. |
[ @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 de combinación 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
significa que los cambios en el artículo de combinación 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 de combinación 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
significa que los cambios realizados en el artículo de combinación hacen que se reinicialicen las suscripciones existentes y se 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.
Valores de código de retorno
0
(correcto) o 1
(erróneo).
Comentarios
sp_changemergearticle
se usa en la replicación de mezcla.
Dado sp_changemergearticle
que se usa para cambiar las propiedades de artículo que se especificaron inicialmente mediante sp_addmergearticle, consulte sp_addmergearticle para obtener más información sobre estas propiedades.
El cambio de las propiedades siguientes requiere que se genere una nueva instantánea y debe especificar un valor para 1
el parámetro @force_invalidate_snapshot :
check_permissions
column_tracking
destination_owner
pre_creation_command
schema_options
subset_filterclause
El cambio de las siguientes propiedades requiere que se reinicializan las suscripciones existentes y debe especificar un valor para 1
el parámetro @force_reinit_subscription :
check_permissions
column_tracking
destination_owner
pre_creation_command
identityrangemanagementoption
subscriber_upload_options
subset_filterclause
creation_script
schema_option
logical_record_level_conflict_detection
logical_record_level_conflict_resolution
Cuando se especifica un valor de 3
para partition_options
, los metadatos se limpian cada vez que se ejecuta el Agente de mezcla y la instantánea con particiones expira más rápidamente. Al utilizar esta opción, debe considerar la habilitación de la instantánea con particiones solicitada por el suscriptor. Para más información, consulte Crear una instantánea para una publicación de mezcla con filtros con parámetros.
Al establecer la column_tracking
propiedad , si la tabla ya está publicada en otras publicaciones de combinación, el seguimiento de columnas debe ser el mismo que el valor que usan los artículos existentes en función de esta tabla. Este parámetro es específico solamente de los artículos de tabla.
Si varias publicaciones publican artículos basados en la misma tabla subyacente, cambiar la delete_tracking
propiedad o la compensate_for_errors
propiedad de un artículo hace que se realice el mismo cambio en los demás artículos basados en la misma tabla.
Si la cuenta de inicio de sesión o usuario del publicador usada por el proceso de combinación no tiene los permisos de tabla correctos, los cambios no válidos se registran como conflictos.
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_changemergearticle
, es posible que la configuración de bits existente esté desactivada. Para conservar la configuración existente, debe realizar y (AND bit a bit) entre el valor que está estableciendo y el valor actual de schema_option
, que se puede determinar ejecutando sp_helpmergearticle.
Precaución
Cuando muchos (quizás cientos) de artículos de una publicación y se ejecutan sp_changemergearticle
para uno de los artículos, puede tardar mucho tiempo en finalizar la ejecución.
Tabla de opciones de esquema válida
En la tabla siguiente se describen los valores permitidos schema_option
, en función del tipo de artículo.
Tipo de artículo | Valores de las opciones de esquema |
---|---|
func schema only |
0x01 y 0x2000 |
indexed view schema only |
0x01 , 0x040 , 0x0100 , 0x2000 , 0x40000 , 0x1000000 , y 0x200000 |
proc schema only |
0x01 y 0x2000 |
table |
Todas las opciones. |
view schema only |
0x01 , 0x040 , 0x0100 , 0x2000 , 0x40000 , 0x1000000 , y 0x200000 |
Ejemplos
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article = N'SalesOrderHeader';
-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks2022]
EXEC sp_changemergearticle
@publication = @publication,
@article = @article,
@property = N'column_tracking',
@value = N'true',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
Permisos
Solo los miembros del rol fijo de servidor sysadmin o db_owner rol fijo de base de datos pueden ejecutar sp_changemergearticle
.