sp_changemergearticle (Transact-SQL)

Se aplica a: síSQL Server (todas las versiones admitidas)

Cambia las propiedades de un artículo de mezcla. Este procedimiento almacenado se ejecuta en el Publisher en la base de datos de publicación.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQL

Sintaxis

  
sp_changemergearticle [ @publication = ] 'publication'  
        , [ @article = ] 'article'  
    [ , [ @property = ] 'property' ]  
    [ , [ @value = ] 'value' ]  
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]  
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]  

Argumentos

[ @publication = ] 'publication' Es el nombre de la publicación en la que existe el artículo. publication es sysname, sin ningún valor predeterminado.

[ @article = ] 'article' Es el nombre del artículo que se va a cambiar. article es sysname, sin ningún valor predeterminado.

[ @property = ] 'property' Es la propiedad que se va a cambiar para el artículo y la publicación dados. property es nvarchar(30) y puede ser uno de los valores enumerados en la tabla.

[ @value = ] 'value' Es el nuevo valor de la propiedad especificada. value es nvarchar(1000) y puede ser uno de los valores enumerados en la tabla.

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 Los permisos de tabla no se comprueban.
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, vea sp_addmergearticle.
false Las acciones de compensación no se ejecutan; éste es el comportamiento predeterminado. Para obtener más información, vea sp_addmergearticle.

Importante Aunque es posible que los datos de las filas afectadas parezcan estar fuera de convergencia, en cuanto se apliquen errores, se pueden aplicar cambios y convergerán los datos. * * * * 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 * * Establecer delete_tracking en false da como resultado la no convergencia y las filas eliminadas deben quitarse manualmente.
description Entrada descriptiva del artículo.
destination_owner Nombre del propietario del objeto en la base de datos de suscripciones, si no 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 tiene identityrangemanagementoption establecido en auto o auto_identity_range establecido en true. Solamente se aplica en un artículo de la tabla. Para obtener más información, vea 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.
Ninguna 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 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 se restringen al registro lógico.
partition_options 0 El filtro para el artículo es estático o no produce un subconjunto de datos único para cada partición, es decir, es una partición "superpuesta".
1 Las particiones se superponen y las actualizaciones del lenguaje 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 partició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 quitará la suscripción existente.
pre_creation_command Ninguna 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.
Soltar Quita la tabla antes de volver a crearla.
truncate Trunca la tabla de destino.
processing_order int que indica el orden de procesamiento de los artículos de 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 tiene identityrangemanagementoption establecido en auto 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, vea 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 no está publicado 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 que se proporcione una columna como entrada para el solucionador. resolver_info es nvarchar(255), con un valor predeterminado de NULL. Para obtener más información, consulte Solucionadores basados en Microsoft COM.
schema_option (mapa de bits) Para obtener más información, vea la sección Comentarios más adelante en este tema.
0x00 Deshabilita el scripting por 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 utilizar si existe 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 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 Genera instrucciones ALTER TABLE al incluir restricciones en scripting.
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 Replica los 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 los tipos de datos de objetos grandes (nvarchar(max), varchar(max) y varbinary(max)) que se introdujeron en en los tipos de datos que se admiten SQL Server 2005 (9.x) en SQL Server 2000 (8.x) .
0x40000000 Replicación de permisos.
0x80000000 Intente quitar las dependencias de los objetos que no forman parte de la publicación.
0x100000000 Use esta opción para replicar el atributo FILESTREAM si se especifica en columnas varbinary(max). No especifique esta opción si replica tablas en suscriptores de SQL Server 2005 (9.x). No se admite la replicación de tablas que tienen columnas FILESTREAM en suscriptores, independientemente de cómo se establezca SQL Server 2000 (8.x) esta opción de esquema. Vea la opción relacionada 0x800000000.
0x200000000 Convierte los tipos de datos de fecha y hora (date, time, datetimeoffset y datetime2) que se introducen en en los tipos de datos que se admiten en versiones anteriores SQL Server 2008 de SQL Server .
0x400000000 Replica la opción de compresión para los datos y los índices. Para obtener más información, consulte Data Compression.
0x800000000 Establezca esta opción para almacenar los datos de FILESTREAM en su propio grupo de archivos en el suscriptor. Si no se establece esta opción, los datos de FILESTREAM se almacenan en el grupo de archivos predeterminado. La replicación no crea grupos de archivos; por tanto, si establece esta opción, debe crear el grupo de archivos antes de aplicar la instantánea en el suscriptor. Para obtener más información sobre cómo crear objetos antes de aplicar la instantánea, vea Ejecutar scripts antes y después de aplicar la instantánea.

Vea la opción relacionada 0x100000000.
0x1000000000 Convierte tipos definidos por el usuario (UDT) de Common Language Runtime (CLR) 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, vea hierarchyid (Transact-SQL).
0x4000000000 Replica los índices filtrados de la tabla. Para obtener más información sobre los índices filtrados, vea Crear índices filtrados.
0x8000000000 Convierte los tipos de datos geography y geometry en varbinary(max) para que las columnas de estos tipos se puedan replicar en suscriptores que ejecutan SQL Server 2005 (9.x) .
0x10000000000 Replica índices en columnas de tipo geography y geometry.
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 stream_blob_columns en false.

Importante Habilitar esta optimización de memoria podría dañar el 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 utiliza 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. Si cambia esta propiedad puede que sea necesaria la reinicialización de suscriptores existentes.
1 Se permiten cambios en un suscriptor con una suscripción de cliente, pero no se cargan en el publicador.
2 No se permiten cambios 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 los nombres de columna en cláusulas de filtro de fila parametrizadas, como . * * * * LEFT([MyColumn]) = SUSER_SNAME() Si usa HOST_NAME en una cláusula de filtro e invalida el valor 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 "Invalidación del valor HOST_NAME() " en Parameterized Row Filters.
threshold Valor de porcentaje usado para los suscriptores que SQL Server Compact ejecutan o versiones anteriores de SQL Server . el umbral controla cuándo Agente de mezcla asigna un nuevo intervalo de identidad. 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 en auto o auto_identity_range se establece en true. Solamente se aplica en un artículo de la tabla. Para obtener más información, vea la sección "Replicación de mezcla" de Replicar columnas de identidad.
verify_resolver_signature 1 La firma digital en un solucionador personalizado se comprueba para determinar si proviene de una fuente confiable.
0 La firma digital en un solucionador personalizado no se comprueba para determinar si proviene de una fuente confiable.
NULL (predeterminado) Devuelve la lista de valores admitidos para la propiedad.

[ @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 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.

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 poco, con un valor predeterminado de 0.

0 especifica que los cambios en el artículo de combinación no hacen que la suscripción se reinicialice. 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 en el artículo de combinación hacen que se reinicialicen las suscripciones existentes 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.

Valores de código de retorno

0 (correcto) o 1 (error)

Observaciones

sp_changemergearticle se usa en la replicación de mezcla.

Dado sp_changemergearticle se usa para cambiar las propiedades del artículo que se especificaron inicialmente mediante sp_addmergearticle ,consulte sp_addmergearticle para obtener información adicional sobre estas propiedades.

El cambio de las propiedades siguientes requiere que se genere una nueva instantánea y debe especificar un valor de 1 para el force_invalidate_snapshot parámetro :

  • check_permissions

  • column_tracking

  • destination_owner

  • pre_creation_command

  • schema_options

  • subset_filterclause

El cambio de las siguientes propiedades requiere que se reinicialicen las suscripciones existentes y debe especificar un valor de 1 para el force_reinit_subscription parámetro :

  • 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

Al especificar 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 Instantáneas para publicaciones de combinación con filtros con parámetros.

Al establecer la propiedad column_tracking, 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 basados en 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 propiedad delete_tracking o la propiedad compensate_for_errors para un artículo hace que se haga 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 que utiliza el proceso de mezcla no dispone de 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 mediante sp_changemergearticle, la configuración de bits existente puede desactivarse. Para conservar la configuración existente, debe realizar& (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 hay muchos (quizás cientos) de artículos en una publicación y ejecuta sp_changemergearticle para uno de los artículos, puede tardar mucho tiempo en finalizar la ejecución.

Tabla Opciones de esquema válidas

En la tabla siguiente se describen los schema_option permitidos, según el 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

Ejemplo

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 [AdventureWorks2012]
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.

Consulte también

Ver y modificar propiedades de artículo
Cambiar las propiedades de la publicación y de los artículos
sp_addmergearticle (Transact-SQL)
sp_dropmergearticle (Transact-SQL)
sp_helpmergearticle (Transact-SQL)
Procedimientos almacenados de replicación (Transact-SQL)