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.
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.
NotaEl 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.
ImportanteAunque 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.
ImportanteSi 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.
NotaSi 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.
ImportanteSi 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.
ImportantePor 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.
Vea también