sp_changemergepublication (Transact-SQL)

Se aplica a:SQL Server

Cambia las propiedades de una publicación de combinación. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_changemergepublication
    [ @publication = ] N'publication'
    [ , [ @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. @publication es sysname, sin ningún valor predeterminado.

[ @property = ] N'property'

La propiedad que se va a cambiar para la publicación especificada. @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(255), con un valor predeterminado de NULL.

y pueden ser uno de los valores enumerados en la tabla siguiente.

Esta tabla describe las propiedades de la publicación que se pueden cambiar, así como las restricciones de los valores de esas propiedades.

Propiedad Valor Descripción
allow_anonymous true Se admiten las suscripciones anónimas.
false No se permiten suscripciones anónimas.
allow_partition_realignment true Las eliminaciones se envían al suscriptor para reflejar los resultados de un cambio en la partición mediante la eliminación de los datos que han dejado de formar parte de la partición del suscriptor. Este es el comportamiento predeterminado.
false Los datos de una partición antigua se dejan en el suscriptor, donde los cambios realizados en estos datos en el publicador no se replican en este suscriptor. En cambio, los cambios realizados en el suscriptor se replican en el publicador. Esto sirve para conservar los datos de una partición antigua en una suscripción cuando es necesario que los datos estén accesibles con fines históricos.
allow_pull true Se permiten suscripciones de extracción para la publicación indicada.
false No se permiten suscripciones de extracción para la publicación especificada.
allow_push true Se permiten suscripciones de inserción para la publicación indicada.
false No se permiten suscripciones de inserción para la publicación especificada.
allow_subscriber_initiated_snapshot true El suscriptor puede iniciar el proceso de instantáneas.
false El suscriptor no puede iniciar el proceso de instantánea.
allow_subscription_copy true Puede copiar las bases de datos de suscripciones suscritas a esta publicación.
false No se pueden copiar las bases de datos de suscripción que se suscriben a esta publicación.
allow_synctoalternate true Permite que un asociado de sincronización alternativo se sincronice con este publicador.
false No permite que un asociado de sincronización alternativo se sincronice con este publicador.
allow_web_synchronization true Las suscripciones se pueden sincronizar por HTTPS.
false Las suscripciones no se pueden sincronizar a través de HTTPS.
alt_snapshot_folder Especifica la ubicación de la carpeta alternativa para la instantánea.
automatic_reinitialization_policy 1 Los cambios se cargan desde el suscriptor antes de reinicializar la suscripción.
0 La suscripción se reinicializa sin cargar primero los cambios.
centralized_conflicts true Todos los registros de conflictos se almacenan en el publicador. Si cambia esta propiedad, se deben reinicializar los suscriptores existentes.
false Los registros de conflictos se almacenan en el servidor que perdió en la resolución de conflictos. Si cambia esta propiedad, se deben reinicializar los suscriptores existentes.
compress_snapshot true La instantánea de una carpeta de instantáneas alternativa se comprime en formato CAB. La instantánea de la carpeta de instantáneas predeterminada no se puede comprimir. Para cambiar esta propiedad, se requiere una instantánea nueva.
false De forma predeterminada, la instantánea no está comprimida. Para cambiar esta propiedad, se requiere una instantánea nueva.
conflict_logging publisher Los registros de conflictos se almacenan en el publicador.
subscriber Los registros de conflictos se almacenan en el suscriptor que causó el conflicto. No se admite para suscriptores de SQL Server Compact.
both Los registros de conflictos se almacenan tanto en el publicador como en el suscriptor.
conflict_retention Un valor int que especifica el período de retención, en días, para el que se conservan los conflictos. Establecer conflict_retention en 0 significa que no se necesita ninguna limpieza de conflictos.
description Descripción de la publicación.
dynamic_filters true La publicación se filtra según una cláusula dinámica.
false La publicación no se filtra dinámicamente.
enabled_for_internet true La publicación para Internet está habilitada. El protocolo de transferencia de archivos (FTP) se puede utilizar para transferir los archivos de instantáneas a un suscriptor. Los archivos de sincronización de la publicación se colocan en el C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp directorio .
false La publicación no está habilitada para Internet.
ftp_address Dirección de red del servicio FTP para el distribuidor. Especifica la ubicación de los archivos de instantáneas de la publicación.
ftp_login Nombre de usuario que se usa para conectarse al servicio FTP.
ftp_password Contraseña de usuario que se usa para conectarse al servicio FTP.
ftp_port Número de puerto del servicio FTP para el distribuidor. Especifica el número del puerto TCP del sitio FTP donde se almacenan los archivos de instantáneas de la publicación.
ftp_subdirectory Especifica dónde se crean los archivos de instantáneas si la publicación admite la propagación de instantáneas mediante FTP.
generation_leveling_threshold int Especifica el número de cambios contenidos en una generación. Una generación es una colección de cambios que se entregan a un publicador o suscriptor.
keep_partition_changes true La sincronización se optimiza y solo se ven afectados los suscriptores que tienen filas en las particiones que han cambiado. Para cambiar esta propiedad, se requiere una instantánea nueva.
false La sincronización no está optimizada y las particiones que se envían a los suscriptores se comprueban cuando los datos cambian en una partición. Para cambiar esta propiedad, se requiere una instantánea nueva.
max_concurrent_merge Un valor int que representa el número máximo de procesos de combinación simultáneos que se pueden ejecutar en una publicación. Si es 0, no hay límite. Si hay más de este número de procesos de combinación programados para ejecutarse al mismo tiempo, el exceso de trabajos se coloca en una cola hasta que finaliza un proceso currentlmerge.
max_concurrent_dynamic_snapshots Un valor int que representa el número máximo de sesiones de instantáneas para generar una instantánea de datos filtrada que se puede ejecutar simultáneamente en una publicación de combinación que usa filtros de fila con parámetros. Si 0es , no hay ningún límite. Si se programa un número de procesos de instantáneas superior a éste para que se ejecuten a la vez, el exceso de trabajos se coloca en una cola y se espera hasta que termine de procesarse la mezcla que se está ejecutando.
post_snapshot_script Especifica un puntero a una .sql ubicación de archivo. El Agente de distribución o el Agente de mezcla ejecutan el script posterior a la instantánea después de que se aplique el resto de scripts de objetos replicados y datos durante la sincronización inicial. Para cambiar esta propiedad, se requiere una instantánea nueva.
pre_snapshot_script Especifica un puntero a una .sql ubicación de archivo. El Agente de mezcla ejecuta el script previo a la instantánea antes que cualquiera de los scripts de objetos replicados al aplicar la instantánea en un suscriptor. Para cambiar esta propiedad, se requiere una instantánea nueva.
publication_compatibility_level 100RTM SQL Server 2008 (10.0.x)
90RTM SQL Server 2005 (9.x)
publish_to_activedirectory true Este parámetro está en desuso y se mantiene para la compatibilidad con versiones anteriores de los scripts. Ya no es posible agregar información de publicación a Active Directory.
false Quita la información de publicaciones de Active Directory.
replicate_ddl 1 Las instrucciones de lenguaje de definición de datos (DDL) que se ejecutan en el publicador se replican.
0 Las instrucciones DDL no se replican.
retention Valor int que representa el número de retention_period_unit unidades para las que se guardarán los cambios de la publicación especificada. Si la suscripción no está sincronizada dentro del período de retención y los cambios pendientes que recibió se quitaron mediante una operación de limpieza en el distribuidor, la suscripción expira y se debe reinicializar. El período de retención máximo admitido es el número de días entre el 31 de diciembre de 9999 y la fecha actual.

Nota: El período de retención para las publicaciones de mezcla tiene un período de gracia de 24 horas para alojar a los suscriptores en diferentes zonas horarias.
retention_period_unit day El período de retención se especifica en días.
week El período de retención se especifica en semanas.
month El período de retención se especifica en meses.
year El período de retención se especifica en años.
snapshot_in_defaultfolder true Los archivos de instantánea se almacenan en la carpeta de instantáneas predeterminada.
false Los archivos de instantánea se almacenan en la ubicación alternativa especificada por alt_snapshot_folder. Esta combinación especifica que los archivos de instantáneas se almacenan tanto en la ubicación predeterminada como en la alternativa.
snapshot_ready true Está disponible la instantánea para la publicación.
false La instantánea de la publicación no está disponible.
status active La publicación está en estado activo.
inactive La publicación está en estado inactivo.
sync_mode native o

bcp native
La salida del programa de copia masiva de todas las tablas en modo nativo se utiliza para la instantánea inicial.
character

o bien bcp character
La salida del programa de copia masiva en modo de caracteres de todas las tablas se usa para la instantánea inicial, que es necesaria para todos los suscriptores que no son de SQL Server.
use_partition_groups

Nota: Después de usar grupos de particiones, si se va a revertir al uso setupbelongsde y se establece use_partition_groups=false en changemergearticle, es posible que esto no se refleje correctamente después de tomar una instantánea. Los desencadenadores generados por instantánea son compatibles con los grupos de particiones.

La solución alternativa a este escenario es establecer el estado en Inactivo, modificar y use_partition_groups, a continuación, establecer el estado en Activo.
true La publicación utiliza particiones previamente calculadas.
false La publicación no usa particiones precalutadas.
validate_subscriber_info Muestra las funciones que se utilizan para recuperar información del suscriptor. A continuación, valida los criterios de filtrado dinámico que se usan para el suscriptor para comprobar que la información se particiona de forma coherente.
web_synchronization_url Valor predeterminado de la URL de Internet utilizada para la sincronización web.
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 cambiar la publicación no invalida 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 especifica que cambiar la publicación podría invalidar la instantánea. Si hay suscripciones existentes que requieren una nueva instantánea, concede permiso para que la instantánea existente se marque como obsoleta y para que se genere una nueva instantánea.

Consulte la sección Comentarios de las propiedades que, cuando se cambian, requieren que se genere 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 cambiar la publicación no requiere que se reinicialicen las suscripciones. Si el procedimiento almacenado detecta que el cambio requiere que se reinicialicen las suscripciones existentes, se produce un error y no se realizan cambios.

  • 1 significa que los cambios en la publicación reinicializan las suscripciones existentes y 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_changemergepublication se usa en la replicación de mezcla.

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

  • alt_snapshot_folder
  • compress_snapshot
  • dynamic_filters
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_snapshot_script
  • publication_compatibility_level (solo para 80SP3 )
  • pre_snapshot_script
  • snapshot_in_defaultfolder
  • sync_mode
  • use_partition_groups

Al cambiar las propiedades siguientes, se requiere que se reinicialicen las suscripciones existentes. Debe especificar un valor de 1 para el parámetro @force_reinit_subscription .

  • dynamic_filters
  • validate_subscriber_info

Para enumerar objetos de publicación en Active Directory mediante publish_to_active_directory, el objeto de SQL Server ya debe crearse en Active Directory.

Ejemplos

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge'; 

-- Disable DDL replication for the publication.
USE [AdventureWorks2022]
EXEC sp_changemergepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0,
  @force_invalidate_snapshot = 0, 
  @force_reinit_subscription = 0;
GO

Permisos

Solo los miembros del rol fijo de servidor sysadmin o db_owner rol fijo de base de datos pueden ejecutar sp_changemergepublication.