sp_changepublication (Transact-SQL)
Se aplica a: SQL Server Azure 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 = ] N'publication' ]
[ , [ @property = ] N'property' ]
[ , [ @value = ] N'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] N'publisher' ]
[ ; ]
Argumentos
[ @publication = ] N'publication'
Nombre de la publicación. @publication es sysname, con un valor predeterminado de NULL
.
[ @property = ] N'property'
Propiedad de publicación que se va a cambiar. @property es nvarchar(255), con un valor predeterminado de NULL
.
[ @value = ] N'value'
El nuevo valor de la 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 puede cambiar para las publicaciones punto a punto. |
false |
No se pueden crear suscripciones anónimas para la publicación especificada. No se puede cambiar para las 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 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...SWITCH Las instrucciones 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...SWITCH Las instrucciones no se pueden ejecutar 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 especificada. 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 especificada. | |
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 está comprimida, que es el comportamiento predeterminado para la replicación. | |
conflict_policy |
pub wins |
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 |
Valor 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. |
|
description |
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 sp_changepublication 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 podría 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 siguiente: C:\Program Files\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 |
La publicación no está habilitada 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 en enabled_for_p2p true , 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 debe ser continuous .- 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 usado para conectarse al servicio FTP y 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 recibir los archivos de sincronización inmediatamente después de la suscripción, si el Agente de instantáneas se completa una vez antes 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 . Para obtener más información, vea Efecto de la sincronización inmediata. |
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 la suscripción hasta que se inicie y complete la Agente de instantáneas. | |
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 TRUE en , el Agente de distribución intenta converger datos en la topología aplicando la fila en conflicto del nodo que es 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 "Control de conflictos" en Detección de conflictos punto a punto en replicación punto a punto. |
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 apliquen 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 apliquen todos los demás scripts y datos de objetos replicados durante una sincronización inicial. | |
publish_to_ActiveDirectory |
true |
Este parámetro está en desuso y solo se admite para la compatibilidad con versiones anteriores de scripts. 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: La compatibilidad con el uso de Microsoft Message Queuing se interrumpe. Si se especifica un valor de msmq para @value 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 elementos del mismo nivel en grupos de disponibilidad. | |
repl_freq |
continuous |
Publica la salida de todas las transacciones basadas en el registro. |
snapshot |
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 DDL no se replican. Esta propiedad no se puede cambiar para publicaciones que no son de SQL Server. No se puede deshabilitar la replicación de cambios de esquema al usar la replicación punto a punto. | |
replicate_partition_switch |
true |
ALTER TABLE...SWITCH Las instrucciones 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...SWITCH Las instrucciones no deben replicarse en suscriptores. |
|
retention |
int que representa el período de retención, en horas, para la actividad de suscripción. Si una suscripción no está activa dentro del período de retención, se quita. | |
snapshot_in_defaultfolder |
true |
Los archivos de instantánea se almacenan en la carpeta de instantáneas predeterminada. Si alt_snapshot_folder también se especifica, 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 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. |
character |
Utiliza la salida de todas las tablas mediante copia masiva en modo de carácter al sincronizar las suscripciones. | |
concurrent |
Usa la salida del 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 |
Usa la salida del programa de copia masiva en modo de caracteres 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 está en desuso y ya no se admite. | |
allow_drop |
true |
Habilita la DROP TABLE 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. Para obtener más información, consulte KB 3170123 |
false (valor predeterminado) |
Deshabilita la DROP TABLE compatibilidad de DLL con artículos que forman parte de la replicación transaccional. |
|
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 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 podrían 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.
Consulte la sección Comentarios de las propiedades que, cuando se cambian, requieren la generación de 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 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 = ] N'publisher'
Especifica un publicador que no es de SQL Server. @publisher es sysname, con un valor predeterminado de NULL
.
@publisher no se debe usar al cambiar las propiedades del artículo en un publicador de SQL Server.
Valores de código de retorno
0
(correcto) o 1
(erróneo).
Comentarios
sp_changepublication
se usa en la replicación de instantáneas y la replicación transaccional.
Después de cambiar cualquiera de las siguientes propiedades, 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 publish_to_active_directory
parámetro , el objeto de SQL Server ya debe crearse en Active Directory.
Efecto 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 los cambios necesarios después de que se haya realizado la copia de seguridad se limpien 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.
Ejemplos
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
.