Compartir a través de


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.

Icono de vínculo a temas 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.

    Nota de advertenciaAdvertencia

    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