Compartir a través de


sp_changemergearticle (Transact-SQL)

Cambia las propiedades de un artículo de mezcla. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicaciones.

Icono de vínculo a temasConvenciones 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 de tipo sysname y no tiene ningún valor predeterminado.

  • [ @article=] 'article'
    Es el nombre del artículo que se va a cambiar. article es de tipo sysname y no tiene ningún valor predeterminado.

  • [ @property=] 'property'
    Es la propiedad que se va a cambiar para el artículo y la publicación especificados. property es de tipo nvarchar(30) y puede tener uno de los valores que muestra la tabla.

  • [ @value=] 'value'
    Es el nuevo valor de la propiedad especificada. value es de tipo nvarchar(1000) y puede tener uno de los valores que muestra 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 una resolución interactiva para el artículo.

     

    false

    Deshabilita el uso de una resolución interactiva para el artículo.

    article_resolver

     

    Resolución personalizada para el artículo. Solamente se aplica en un artículo de la 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. Solamente se aplica en un artículo de la tabla.

    NotaNota
    El seguimiento por columna no se puede utilizar cuando se publican tablas con más de 246 columnas.

     

    false

    Desactiva el seguimiento por columna y deja la detección de conflictos a nivel de fila. Solamente se aplica en un artículo de la 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.

    Nota importanteImportante
    Aunque parezca que los datos de las filas afectadas no tengan convergencia, en cuanto trate los errores, se podrán aplicar los cambios y los datos convergerán. 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 en los dos artículos.

    creation_script

     

    Ruta de acceso y nombre de una 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.

    Nota importanteImportante
    Si establece delete_tracking en false, obtendrá una falta de convergencia, y las filas eliminadas tienen que quitarse manualmente.

    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

     

    Valor de tipo bigint que especifica el tamaño del intervalo que se va a utilizar 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 sobre 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 obtener 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

    Se utiliza la detección de conflictos predeterminada como se indica en 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.

    NotaNota
    Si especifica el valor 3 en partition_options, sólo podrá haber una suscripción para cada partición de datos en 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

    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

     

    Valor de tipo int que indica el orden de procesamiento de los artículos en una publicación de mezcla.

    pub_identity_range

     

    Valor de tipo bigint que especifica el tamaño del 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 intervalo 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 sobre 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 una resolución personalizada. Algunas de las resoluciones de Microsoft requieren que se proporcione una columna como entrada para la resolución. resolver_info es de tipo nvarchar(255) y su valor predeterminado es NULL. Para obtener más información, vea Resoluciones basadas en Microsoft COM.

    schema_option (mapa de bits)

    Para obtener más información, vea la sección Notas más adelante en este tema.

     

    0x00

    Deshabilita las scripts del Agente de instantáneas y utiliza la script proporcionada en creation_script.

     

    0x01

    Genera la 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 agrupados 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 scripts.

     

    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.

     

    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)) que se introdujeron en SQL Server 2005 a tipos de datos que se admiten en SQL Server 2000. Para obtener información sobre cómo se asignan estos tipos, vea la sección sobre asignación de los nuevos tipos de datos en versiones anteriores de Usar varias versiones de SQL Server en una topología de replicación.

     

    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) que se introducen en SQL Server 2008 a tipos de datos que se admiten en versiones anteriores de SQL Server. Para obtener información sobre cómo se asignan estos tipos, vea la sección sobre asignación de los nuevos tipos de datos en versiones anteriores de Usar varias versiones de SQL Server en una topología de replicación.

    0x400000000

    Replica la opción de compresión para los datos y los índices. Para obtener más información, vea Crear tablas e índices comprimidos.

    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.

    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 Directrices generales para diseñar í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.

     

    NULL

    El sistema genera automáticamente una opción de esquema válida para el artículo.

    status

    active

    Se ejecuta la script inicial de proceso para publicar la tabla.

     

    unsynced

    La 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 la optimización de secuencia 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 secuencias.

    Nota importanteImportante
    Si se habilita esta optimización de la memoria, el rendimiento del Agente de mezcla podría verse afectado durante la sincronización. Esta opción sólo 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. Solamente se aplica en un artículo de la tabla.

    Nota importanteImportante
    Por motivos de rendimiento, se recomienda que no aplique funciones a nombres de columnas en las cláusulas de los filtros de fila con parámetros, como LEFT([MyColumn]) = SUSER_SNAME(). Si utiliza HOST_NAME en una cláusula de filtro y reemplaza el valor de HOST_NAME, puede que sea necesario convertir los tipos de datos mediante CONVERT. Para obtener más información acerca de las prácticas recomendadas para este caso, vea la sección sobre cómo reemplazar el valor de HOST_NAME() en Filtros de fila con parámetros.

    threshold

     

    Valor de porcentaje utilizado por suscriptores que ejecutan SQL Server Compact 3.5 SP1 o versiones anteriores de SQL Server. threshold controla cuándo asigna el Agente de mezcla 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 utiliza cuando identityrangemanagementoption está establecido en auto o auto_identity_range está establecido en true. Solamente se aplica en un artículo de la tabla. Para obtener más información, vea la sección sobre replicación de mezcla de Replicar columnas de identidad.

    verify_resolver_signature

    1

    La firma digital en una resolución personalizada se comprueba para determinar si proviene de una fuente confiable.

     

    0

    La firma digital en una resolución personalizada no se comprueba para determinar si proviene de una fuente confiable.

    NULL (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 puede invalidar una instantánea existente. force_invalidate_snapshot es de tipo bit y su valor predeterminado es 0.

    0 especifica que los cambios en el artículo de mezcla no invalidarán la instantánea. Si el procedimiento almacenado detecta que el cambio requiere una nueva instantánea, se producirá un error y no se realizarán cambios.

    1 indica que los cambios realizados en el artículo de mezcla pueden invalidar la instantánea y, si hay suscripciones existentes que requieran una nueva instantánea, concede permiso para marcar como obsoleta la instantánea existente y generar una nueva.

    Vea la sección Notas para obtener información acerca de las propiedades que requieren la generación de una nueva instantánea cuando se cambian.

  • [ @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 de tipo bit y su valor predeterminado es 0.

    0 especifica que los cambios en el artículo de mezcla no harán 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 indica que los cambios realizados en el artículo de mezcla harán que se reinicialicen las suscripciones existentes y concede permiso para que se lleve a cabo la reinicialización.

    Vea la sección Notas para obtener información acerca de las propiedades que, cuando cambian, requieren la reinicialización de todas las suscripciones existentes.

Valores de código de retorno

0 (correcto) o 1 (error)

Notas

sp_changemergearticle se utiliza en la replicación de mezcla.

Puesto que sp_changemergearticle se utiliza para cambiar las propiedades de artículos que se especificaron inicialmente con sp_addmergearticle, vea sp_addmergearticle para obtener más información acerca de estas propiedades.

Si se cambian las siguientes propiedades, es necesario generar una instantánea nueva y especificar el valor 1 para el parámetro force_invalidate_snapshot:

  • check_permissions

  • column_tracking

  • destination_owner

  • pre_creation_cmd

  • schema_options

  • subset_filterclause

Si se cambian las siguientes propiedades, será necesario reinicializar las suscripciones existentes y especificar el valor 1 para el parámetro force_reinit_subscription:

  • check_permissions

  • column_tracking

  • destination_owner

  • subscriber_upload_options

  • subset_filterclause

Si especifica el valor 3 en partition_options, los metadatos se limpian siempre que se ejecuta el Agente de mezcla y la instantánea con particiones caduca 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 obtener más información, vea Instantáneas para publicaciones de mezcla con filtros con parámetros.

Al establecer la propiedad column_tracking, si la tabla se ha publicado ya en otras publicaciones de mezcla, el seguimiento por columna debe ser el mismo que el valor utilizado por 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, el cambio de la propiedad delete_tracking o la propiedad compensate_for_errors de un artículo hace que los mismos cambios se realicen en los otros artículos que se basan 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 ejecuta una actualización bit a bit. Esto significa que cuando se establece schema_option con sp_changemergearticle, los valores de los bits existentes pueden desactivarse. Para conservar los valores existentes, debe ejecutar una operación & (AND bit a bit) entre el valor que está estableciendo y el valor actual de schema_option, que puede determinarse ejecutando sp_helpmergearticle.

Tabla de opciones de esquema válidas

En la tabla siguiente se describen los valores permitidos de schema_optionen 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

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 [AdventureWorks]
EXEC sp_changemergearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'column_tracking', 
  @value = N'true',
  @force_invalidate_snapshot = 1,
  @force_reinit_subscription = 1;
GO

Permisos

Sólo los miembros de la función fija de servidor sysadmin o de la función fija de base de datos db_owner pueden ejecutar sp_changemergearticle.