sp_changepublication (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Cambia las propiedades de una publicació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_changepublication [ [ @publication = ] 'publication' ]  
    [ , [ @property = ] 'property' ]  
    [ , [ @value = ] 'value' ]  
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]  
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]  
    [ , [ @publisher = ] 'publisher' ]

Argumentos

[ @publication = ] 'publication' Es el nombre de la publicación. publication es sysname, con un valor predeterminado de NULL.

[ @property = ] 'property' Es la propiedad de publicación que se va a cambiar. property es nvarchar(255).

[ @value = ] 'value' Es el nuevo valor de propiedad. value es nvarchar(255), con un valor predeterminado de NULL.

Esta tabla describe las propiedades de la publicación que se pueden cambiar y las restricciones de los valores de esas propiedades.

Propiedad Valor Descripción
allow_anonymous true Las suscripciones anónimas se pueden crear para la publicación especificada y immediate_sync también deben ser true. No se pueden cambiar para publicaciones punto a punto.
false No se pueden crear suscripciones anónimas para la publicación indicada. No se pueden cambiar para publicaciones punto a punto.
allow_initialize_from_backup true Los suscriptores pueden inicializar una suscripción a esta publicación desde una copia de seguridad en lugar de desde una instantánea inicial. Esta propiedad no se puede cambiar para publicaciones que no son de Microsoft SQL Server.
false Los suscriptores deben utilizar la instantánea inicial. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
allow_partition_switch true ALTER TABLE... Las instrucciones SWITCH se pueden ejecutar en la base de datos publicada. Para obtener más información, vea Replicar tablas e índices con particiones.
false ALTER TABLE... No se pueden ejecutar instrucciones SWITCH en la base de datos publicada.
allow_pull true Se permiten suscripciones de extracción para la publicación indicada. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
false No se permiten suscripciones de extracción para la publicación indicada. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
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 indicada.
allow_subscription_copy true Habilita la funcionalidad de copia de las bases de datos suscritas a esta publicación. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
false Deshabilita la funcionalidad de copia de las bases de datos suscritas a esta publicación. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
alt_snapshot_folder Ubicación de la carpeta alternativa de la instantánea.
centralized_conflicts true Los registros de conflictos se almacenan en el publicador. Se puede cambiar únicamente si no hay suscripciones activas. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
false Los registros de conflictos se almacenan tanto en el publicador como en el suscriptor que provocó el conflicto. Se puede cambiar únicamente si no hay suscripciones activas. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
compress_snapshot true La instantánea de una carpeta de instantáneas alternativa se comprime en el formato de archivo .cab. La instantánea de la carpeta de instantáneas predeterminada no se puede comprimir.
false La instantánea no se comprime, que es el comportamiento predeterminado para la replicación.
conflict_policy pub gana Directiva de resolución de conflictos para actualizar suscriptores en los que el publicador gana el conflicto. Esta propiedad se puede cambiar únicamente si no hay suscripciones activas. No es compatible con publicadores de Oracle.
sub reinit Para actualizar los suscriptores; si se produce un conflicto, la suscripción debe renicializarse. Esta propiedad se puede cambiar únicamente si no hay suscripciones activas. No es compatible con publicadores de Oracle.
sub wins Directiva de resolución de conflictos para actualizar suscriptores en los que el suscriptor gana el conflicto. Esta propiedad se puede cambiar únicamente si no hay suscripciones activas. No es compatible con publicadores de Oracle.
conflict_retention int que especifica el período de retención de conflictos, en días. El período de retención predeterminado es de 14 días. 0 significa que no se necesita ninguna limpieza de conflictos. No es compatible con publicadores de Oracle.
descripción Entrada opcional en la que se describe la publicación.
enabled_for_het_sub true Permite que la publicación admita suscriptores que no son de SQL Server. enabled_for_het_sub no se puede cambiar cuando hay suscripciones a la publicación. Es posible que tenga que ejecutar procedimientos almacenados de replicación (Transact-SQL) para cumplir los siguientes requisitos antes de establecer enabled_for_het_sub en true:
- allow_queued_tran debe ser false.
- allow_sync_tran debe ser false.
Cambiar enabled_for_het_sub a true puede cambiar la configuración de publicación existente. Para más información, consulte Non-SQL Server Subscribers. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
false La publicación no admite suscriptores que no son de SQL Server. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
enabled_for_internet true Se habilita la publicación para Internet y se puede utilizar el protocolo de transferencia de archivos (FTP) para transferir los archivos de instantáneas a un suscriptor. Los archivos de sincronización de la publicación se colocan en el directorio C:\Archivos de programa\Microsoft SQL Server\MSSQL\Repldata\ftp. ftp_address no puede ser NULL. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
false No se habilita la publicación para Internet. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
enabled_for_p2p true La publicación admite la replicación punto a punto. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
Para establecer enabled_for_p2p entrue, se aplican las restricciones siguientes:
- allow_anonymous debe ser false
- allow_dts debe ser false.
- allow_initialize_from_backup debe ser true
- allow_queued_tran debe ser false.
- allow_sync_tran debe ser false.
- enabled_for_het_sub debe ser false.
- independent_agent debe ser true.
- repl_freq deben ser continuos.
- replicate_ddl debe ser 1.
false La publicación no admite la replicación punto a punto. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
ftp_address Ubicación de los archivos de instantáneas de la publicación accesible a través de FTP. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
ftp_login Nombre de usuario que se utiliza para conectar con el servicio FTP; se permite el valor ANONYMOUS. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
ftp_password Contraseña para el nombre de usuario utilizado para conectarse al servicio FTP. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
ftp_port Número de puerto del servicio FTP para el distribuidor. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
ftp_subdirectory Especifica dónde se crean los archivos de instantánea si la publicación admite la propagación de instantáneas mediante FTP. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
immediate_sync true Se crean o vuelven a crear archivos de sincronización para la publicación cada vez que se ejecuta el Agente de instantáneas. Los suscriptores pueden obtener los archivos de sincronización inmediatamente después de la suscripción si el Agente de instantáneas ha terminado su ejecución antes de la creación de la suscripción. Las nuevas suscripciones obtienen los últimos archivos de sincronización generados por la ejecución más reciente del Agente de instantáneas. independent_agent también debe ser true. Consulte los comentarios siguientes para obtener información adicional sobre immediate_sync.
false Se crean archivos de sincronización solo si hay nuevas suscripciones. Los suscriptores no pueden recibir los archivos de sincronización después de suscribirse hasta que el Agente de instantáneas haya comenzado y terminado.
independent_agent true La publicación tiene su propio Agente de distribución dedicado.
false La publicación utiliza un Agente de distribución compartido, y cada par de bases de datos de publicaciones y suscripciones tiene un agente compartido.
p2p_continue_onconflict true El Agente de distribución continúa procesando los cambios cuando se detecta un conflicto.
Precaución: Se recomienda usar el valor predeterminado de FALSE. Cuando esta opción se establece TRUEen , el Agente de distribución intenta converger datos en la topología aplicando la fila en conflicto del nodo que tiene el identificador de origen más alto. Este método no garantiza la convergencia. Debe asegurarse de que la topología sea coherente una vez detectado un conflicto. Para obtener más información, vea "Controlar los conflictos" en Conflict Detection in Peer-to-Peer Replication.
false El Agente de distribución detiene el procesamiento de los cambios cuando detecta un conflicto.
post_snapshot_script Especifica la ubicación de un archivo de script de Transact-SQL que el Agente de distribución se ejecuta después de que se hayan aplicado todos los demás scripts y datos de objetos replicados durante una sincronización inicial.
pre_snapshot_script Especifica la ubicación de un archivo de script de Transact-SQL que el Agente de distribución se ejecuta antes de que se hayan aplicado todos los demás scripts y datos de objetos replicados durante una sincronización inicial.
publish_to_ActiveDirectory true Este parámetro ha quedado desusado y solo se admite para la compatibilidad de scripts con versiones anteriores. Ya no puede agregar información de publicación a Microsoft Active Directory.
false Quita la información de publicaciones de Active Directory.
queue_type sql Use SQL Server para almacenar transacciones. Esta propiedad se puede cambiar únicamente si no hay suscripciones activas.

Nota: Se ha interrumpido la compatibilidad con el uso de Microsoft Message Queuing. Si se especifica un valor de msmq para el valor , se produce un error.
redirected_publisher Nombre del agente de escucha del grupo de disponibilidad. Se usa en la replicación punto a punto cuando un elemento del mismo nivel está en un grupo de disponibilidad. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server. Se introdujo en SQL Server 2019 (15.x) CU 13. Para obtener más información, consulte Configuración de un mismo nivel como parte del grupo de disponibilidad o Configuración de ambos pares en grupos de disponibilidad.
repl_freq continuous Publica la salida de todas las transacciones basadas en el registro.
instantánea Publica solamente los eventos de sincronización programados.
replicate_ddl 1 Las instrucciones de Lenguaje de definición de datos (DDL) que se ejecutan en el publicador se replican. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server.
0 Las instrucciones de DDL no se replican. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server. La replicación de los cambios en el esquema no puede deshabilitarse al usar la replicación punto a punto.
replicate_partition_switch true ALTER TABLE... Las instrucciones SWITCH que se ejecutan en la base de datos publicada deben replicarse en suscriptores. Esta opción solo es válida si allow_partition_switch se establece en TRUE. Para obtener más información, vea Replicar tablas e índices con particiones.
false ALTER TABLE... Las instrucciones SWITCH no deben replicarse en suscriptores.
Retención int que representa el período de retención, en horas, para la actividad de suscripción. Si una suscripción no ha estado activa durante el período de retención, se elimina.
snapshot_in_defaultfolder true Los archivos de instantánea se almacenan en la carpeta de instantáneas predeterminada. Si también se especifica alt_snapshot_folder, los archivos de instantánea se almacenan en las ubicaciones predeterminadas y alternativas.
false Los archivos de instantánea se almacenan en la ubicación alternativa especificada por alt_snapshot_folder.
status active Los datos de la publicación están disponibles inmediatamente para los suscriptores cuando se crea la publicación. No es compatible con publicadores de Oracle.
inactive Los datos de la publicación no están disponibles para los suscriptores cuando se crea la publicación. No es compatible con publicadores de Oracle.
sync_method native Utiliza la salida de todas las tablas mediante copia masiva en modo nativo al sincronizar las suscripciones.
carácter Utiliza la salida de todas las tablas mediante copia masiva en modo de carácter al sincronizar las suscripciones.
Concurrente Utiliza un programa de copia masiva en modo nativo de todas las tablas, pero no bloquea las tablas durante el proceso de generación de instantáneas. No es válido para la replicación de instantáneas.
concurrent_c Utiliza un programa de copia masiva en modo de carácter de todas las tablas, pero no bloquea las tablas durante el proceso de generación de instantáneas. No es válido para la replicación de instantáneas.
Taskid Esta propiedad ha quedado desusada y ya no se admite.
allow_drop true Habilita DROP TABLE la compatibilidad de DLL con artículos que forman parte de la replicación transaccional. Versión mínima admitida: Service Pack 2014 (12.x) SQL Server 2 o superior y SQL Server 2016 (13.x) Service Pack 1 o superior. Referencia adicional: KB 3170123
false Deshabilita la DROP TABLE compatibilidad de DLL con artículos que forman parte de la replicación transaccional. Este es el valor predeterminado de esta propiedad.
NULL (valor 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 realizados en el artículo 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 especifica que los cambios realizados en el artículo pueden hacer que la instantánea no sea válida. Si existen suscripciones que requieran una nueva instantánea, este valor da permiso para que la instantánea existente se marque como obsoleta y se genere otra nueva.
    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 bit con un valor predeterminado de 0.

  • 0 especifica que los cambios realizados en el artículo 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 especifica que los cambios realizados en el artículo hacen que se reinicialice la suscripción existente y que se conceda permiso para que se produzca la reinicialización de la suscripción.

[ @publisher = ] 'publisher' Especifica un publicador que no es de SQL Server. publisher es sysname, con un valor predeterminado de NULL.

Nota:

Publisher no debe usarse al cambiar las propiedades de los artículos en un publicador de SQL Server.

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

sp_changepublication se usa en la replicación de instantáneas y la replicación transaccional.

Después de cambiar cualquiera de las propiedades siguientes, debe generar una nueva instantánea y debe especificar un valor de 1 para el parámetro force_invalidate_snapshot.

  • alt_snapshot_folder
  • compress_snapshot
  • enabled_for_het_sub
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_snapshot_script
  • pre_snapshot_script
  • snapshot_in_defaultfolder
  • sync_mode

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

Impacto de la sincronización inmediata

Cuando la sincronización inmediata está activada, se realiza un seguimiento de todos los cambios en el registro inmediatamente después de que se genere la instantánea inicial incluso si no hay suscripciones. Los cambios registrados se usan cuando un cliente usa la copia de seguridad para agregar un nuevo nodo del mismo nivel. Una vez restaurada la copia de seguridad, el elemento del mismo nivel se sincroniza con cualquier otro cambio que se produzca después de realizar la copia de seguridad. Dado que se realiza un seguimiento de los comandos en la base de datos de distribución, la lógica de sincronización puede examinar el último LSN de copia de seguridad y usarlo como punto de partida, sabiendo que el comando está disponible si la copia de seguridad se realizó dentro del período de retención máximo. (El valor predeterminado para el período de retención mínimo es de 0 horas y el período máximo de retención es de 24 horas).

Cuando la sincronización inmediata está desactivada, los cambios se mantienen al menos el período de retención mínimo y se limpian inmediatamente para todas las transacciones que ya se han replicado. Si la sincronización inmediata está desactivada y configurada con el período de retención predeterminado, es probable que se hayan limpiado los cambios necesarios una vez realizada la copia de seguridad y que el nuevo nodo del mismo nivel no se inicialice correctamente. La única opción que queda es poner en modo inactivo la topología. Activar la sincronización inmediata proporciona mayor flexibilidad y es el valor recomendado para la replicación P2P.

Ejemplo

DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran' 

-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2022]
EXEC sp_changepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0
GO

Permisos

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

Consulte también

Ver y modificar propiedades de publicación
Cambiar las propiedades de la publicación y de los artículos
sp_addpublication (Transact-SQL)
sp_droppublication (Transact-SQL)
sp_helppublication (Transact-SQL)
Procedimientos almacenados de replicación (Transact-SQL)