sp_changepublication (Transact-SQL)
Cambia las propiedades de una publicación. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicaciones.
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 de tipo sysname y su valor predeterminado es NULL.[ @property = ] 'property'
Es la propiedad de publicación que se va a cambiar. property es de tipo nvarchar(255).[ @value = ] 'value'
Es el nuevo valor de la propiedad. value es de tipo nvarchar(255) y su valor predeterminado es 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
Se pueden crear suscripciones anónimas para la publicación indicada e immediate_sync debe ser también 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 sean de Microsoft SQL Server.
false
Los suscriptores deben utilizar la instantánea inicial. Esta propiedad no se puede cambiar para publicaciones que no sean de SQL Server.
allow_partition_switch
true
Las instrucciones ALTER TABLE...SWITCH se pueden ejecutar con la base de datos publicada. Para obtener más información, vea Replicar tablas e índices con particiones.
false
Las instrucciones ALTER TABLE...SWITCH no se pueden ejecutar con 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 sean 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 sean 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 sean 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 sean 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 sean 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 sean 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 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
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 realizar 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
Habilita la publicación para que admita suscriptores que no son de SQL Server. enabled_for_het_sub no se puede cambiar cuando hay suscripciones a la publicación. Puede ser necesario ejecutar sp_changepublication (Transact-SQL) para cumplir los siguientes requisitos antes de definir enabled_for_het_sub como true:
allow_queued_tran debe ser false.
allow_sync_tran debe ser false.
Cambiar enabled_for_het_sub a true puede modificar la configuración de publicación existente. Para obtener más información, vea Suscriptores que no son de SQL Server. Esta propiedad no se puede cambiar para publicaciones que no sean de SQL Server.
false
La publicación no admite suscriptores que no sean de SQL Server. Esta propiedad no se puede cambiar para publicaciones que no sean 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 sean de SQL Server.
false
No se habilita la publicación para Internet. Esta propiedad no se puede cambiar para publicaciones que no sean 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 sean de SQL Server.
Para establecer enabled_for_p2p como true, se aplican las siguientes restricciones:
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 sean 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 sean 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 sean 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 sean 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 sean de SQL Server.
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. Esta propiedad no se puede cambiar para publicaciones que no sean 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. Vea la sección Comentarios más adelante para obtener información adicional acerca de 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.
Advertencia Se recomienda utilizar el valor predeterminado FALSE. Cuando esta opción está establecida en TRUE, el Agente de distribución intenta converger los datos en la topología aplicando la fila en conflicto del nodo que tiene el identificador de originador más alto. Este método no garantiza la convergencia. Debe asegurarse de que la topología es coherente una vez detectado un conflicto. Para obtener más información, vea "Controlar los conflictos" en Detección de conflictos en la 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 ejecutará una vez se hayan aplicado todos los demás datos y scripts 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 ejecutará antes de que se hayan aplicado todos los demás datos y scripts de objetos replicados durante una sincronización inicial.
publish_to_ActiveDirectory
true
Este parámetro ha quedado desusado y solamente se admite para la compatibilidad de scripts con versiones anteriores. Ya no es posible agregar información de las publicaciones a Microsoft Active Directory.
false
Quita la información de publicaciones de Active Directory.
queue_type
sql
Utiliza SQL Server para almacenar las transacciones. Esta propiedad se puede cambiar únicamente si no hay suscripciones activas.
[!NOTA]
La compatibilidad para utilizar Microsoft Message Queue Server ha dejado de incluirse. Si se especifica el valor msmq para value, se produce un error.
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 sean de SQL Server.
0
Las instrucciones de DDL no se replican. Esta propiedad no se puede cambiar para publicaciones que no sean 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
Las instrucciones ALTER TABLE...SWITCH que se ejecutan con la base de datos publicada se deberían replicar en los 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
Las instrucciones ALTER TABLE...SWITCH no se deberían replicar en los suscriptores.
retention
int que representa el período de retención, en horas, para la actividad de la 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 predeterminada y alternativa.
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.
character
Utiliza la salida de todas las tablas mediante copia masiva en modo de carácter al sincronizar las suscripciones.
concurrent
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.
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 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.
El valor 1 especifica que los cambios en el artículo pueden invalidar la instantánea. 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 la reinicialización de las suscripciones existentes. force_reinit_subscription es de tipo bit y su valor predeterminado es 0.El valor 0 especifica que los cambios en el artículo no obligarán a reinicializar la suscripción. Si el procedimiento almacenado detecta que el cambio obligaría a reinicializar las suscripciones existentes, se producirá un error y no se realizarán cambios.
1 especifica que los cambios realizados en el artículo darán lugar a que se reinicialicen las suscripciones existentes y concede permiso para que se lleve a cabo la reinicialización.
[ @publisher = ] 'publisher'
Especifica un publicador que no es de SQL Server. publisher es de tipo sysname y su valor predeterminado es NULL.[!NOTA]
publisher no debería utilizarse cuando se cambien las propiedades de artículo de un publicador de SQL Server.
Valores de código de retorno
0 (correcto) o 1 (error)
Comentarios
sp_changepublication se utiliza en la replicación transaccional y de instantáneas.
Si se cambia cualquiera de las siguientes propiedades, es necesario generar una instantánea nueva y especificar el valor 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 ver una lista de objetos de publicación de Active Directory con el parámetro publish_to_active_directory, el objeto SQL Server debe estar ya creado 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 aunque no haya ninguna suscripción. Los cambios registrados se usarán cuando un cliente emplee una copia de seguridad para agregar un nuevo nodo del mismo nivel. Una vez restaurada la copia de seguridad, el elemento del mismo nivel se sincronizará con cualquier otro cambio que se produzca después de realizarse la copia de seguridad. Puesto que se realiza un seguimiento de los comandos en la base de datos de distribución, la lógica de sincronización puede ver el último LSN del que se hizo copia de seguridad y usarlo como punto de partida, sabiendo que el comando estará 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 del período de retención máximo es de 24 horas).
Cuando la sincronización inmediata está desactivada, los cambios se conservan al menos durante el período mínimo de retención 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 [AdventureWorks2012]
EXEC sp_changepublication
@publication = @publication,
@property = N'replicate_ddl',
@value = 0
GO
Permisos
Solo los miembros del rol fijo de servidor sysadmin o del rol fijo de base de datos db_owner pueden ejecutar sp_changepublication.
Vea también
Referencia
sp_addpublication (Transact-SQL)
sp_droppublication (Transact-SQL)
sp_helppublication (Transact-SQL)
Procedimientos almacenados de replicación (Transact-SQL)
Conceptos
Ver y modificar propiedades de publicación
Cambiar las propiedades de la publicación y de los artículos