sp_changepublication (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Modifie les propriétés d'une publication. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_changepublication [ [ @publication = ] 'publication' ]  
    [ , [ @property = ] 'property' ]  
    [ , [ @value = ] 'value' ]  
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]  
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]  
    [ , [ @publisher = ] 'publisher' ]

Arguments

[ @publication = ] 'publication' Nom de la composition. la publication est sysname, avec une valeur par défaut null.

[ @property = ] 'property' Propriété de publication à modifier. estnvarchar(255).

[ @value = ] 'value' Valeur de la nouvelle propriété. la valeur est nvarchar(255), avec la valeur NULL par défaut.

Le tableau ci-dessous décrit les propriétés modifiables de la publication et les limites liées aux valeurs de ces propriétés.

Propriété Valeur Description
allow_anonymous true Les abonnements anonymes peuvent être créés pour la publication donnée et immediate_sync doivent également être vrais. Ne peut pas être modifiée pour les publications d'égal à égal.
false Il n'est pas possible de créer des abonnements anonymes pour la publication concernée. Ne peut pas être modifiée pour les publications d'égal à égal.
allow_initialize_from_backup true Les abonnés peuvent initialiser un abonnement à cette publication à partir d'une sauvegarde au lieu de le faire à partir d'un instantané initial. Cette propriété ne peut pas être modifiée pour les publications autres que Microsoft SQL Server.
false Les abonnés doivent utiliser l'instantané initial. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
allow_partition_switch true ALTER TABLE... Les instructions SWITCH peuvent être exécutées sur la base de données publiée. Pour plus d’informations, consultez Répliquer des tables et des index partitionnés.
false ALTER TABLE... Les instructions SWITCH ne peuvent pas être exécutées sur la base de données publiée.
allow_pull true Les abonnements par extraction de données (pull) sont autorisés pour la publication concernée. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
false Les abonnements par extraction de données (pull) sont pas autorisés pour la publication concernée. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
allow_push true Les abonnements par envoi de données (push) sont autorisés pour la publication concernée.
false Les abonnements par envoi de données (push) ne sont pas autorisés pour la publication concernée.
allow_subscription_copy true Active la possibilité de copier les bases de données qui sont abonnées à la publication. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
false Désactive la possibilité de copier les bases de données qui sont abonnées à la publication. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
alt_snapshot_folder Emplacement du dossier de remplacement pour l'instantané.
centralized_conflicts true Les enregistrements en conflit sont stockés sur le serveur de publication. Ne peut être modifiée qu'en l'absence d'abonnements actifs. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
false Les enregistrements en conflit sont stockés à la fois sur le serveur de publication et sur l'Abonné ayant généré le conflit. Ne peut être modifiée qu'en l'absence d'abonnements actifs. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
compress_snapshot true Un instantané dans un dossier d'instantanés de remplacement est compressé au format de fichier .cab. L'instantané se trouvant dans le dossier d'instantané par défaut ne peut pas être compressé.
false L'instantané n'est pas compressé ; c'est le comportement par défaut de la réplication.
conflict_policy pub wins Politique de résolution des conflits de mise à jour des Abonnés dans laquelle le serveur de publication l'emporte dans le conflit. Cette propriété ne peut être modifiée qu'en l'absence d'abonnements actifs. Non pris en charge pour les serveurs de publication Oracle.
sous-réinitialisation Pour la mise à jour des Abonnés, en cas de conflit, l'abonnement doit être réinitialisé. Cette propriété ne peut être modifiée qu'en l'absence d'abonnements actifs. Non pris en charge pour les serveurs de publication Oracle.
sous-victoires Politique de résolution des conflits de mise à jour des Abonnés dans laquelle l'Abonné l'emporte dans le conflit. Cette propriété ne peut être modifiée qu'en l'absence d'abonnements actifs. Non pris en charge pour les serveurs de publication Oracle.
conflict_retention int qui spécifie la période de rétention de conflit, en jours. La rétention par défaut est de 14 jours. 0 signifie qu’aucun conflit propre up n’est nécessaire. Non pris en charge pour les serveurs de publication Oracle.
description Entrée facultative décrivant la publication.
enabled_for_het_sub true Permet à la publication de prendre en charge les abonnés non-SQL Server. enabled_for_het_sub ne peut pas être modifié lorsqu’il existe des abonnements à la publication. Vous devrez peut-être exécuter des procédures stockées de réplication (Transact-SQL) pour respecter les exigences suivantes avant de définir enabled_for_het_sub sur true :
- allow_queued_tran doit être false.
- allow_sync_tran doit être false.
La modification de enabled_for_het_sub sur true peut modifier les paramètres de publication existants. Pour plus d’informations, consultez Non-SQL Server Subscribers. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
false La publication ne prend pas en charge les abonnés non-SQL Server. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
enabled_for_internet true La publication est activée pour Internet, et le protocole FTP peut être utilisé pour le transfert des fichiers d'instantané vers un abonné. Les fichiers de synchronisation de la publication sont placés dans le répertoire suivant : C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp. ftp_address ne peut pas être NULL. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
false La publication n'est pas activée pour Internet. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
enabled_for_p2p true La publication prend en charge la réplication d'égal à égal. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
Pour définir enabled_for_p2p sur true, les restrictions suivantes s’appliquent :
- allow_anonymous doit être false
- allow_dts doit être false.
- allow_initialize_from_backup doit être vrai
- allow_queued_tran doit être false.
- allow_sync_tran doit être false.
- enabled_for_het_sub doit être false.
- independent_agent doit être vraie.
- repl_freq doit être continue.
- replicate_ddl doit être 1.
false La publication ne prend pas en charge la réplication d'égal à égal. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
ftp_address Emplacement accessible par FTP des fichiers d'instantané de la publication. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
ftp_login Nom d'utilisateur permettant la connexion au service FTP ; la valeur ANONYMOUS est autorisée. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
ftp_password Mot de passe associé au nom d'utilisateur utilisé pour la connexion au service FTP. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
ftp_port Numéro de port du service FTP du serveur de distribution. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
ftp_subdirectory Spécifie l’emplacement où les fichiers instantané sont créés si la publication prend en charge la propagation de instantané s à l’aide de FTP. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
immediate_sync true Les fichiers de synchronisation sont créés ou recréés à chaque exécution de l'Agent d'instantané. Les Abonnés peuvent obtenir les fichiers de synchronisation immédiatement après l'abonnement si l'Agent d'instantané a été exécuté une fois avant l'abonnement. Les nouveaux abonnements obtiennent les fichiers de synchronisation les plus récents, générés lors de la dernière exécution de l'Agent d'instantané. independent_agent doit également être vraie. Pour plus d’informations sur immediate_sync, consultez les remarques ci-dessous.
false Les fichiers de synchronisation sont créés uniquement lors de nouveaux abonnements. Les Abonnés ne peuvent recevoir les fichiers de synchronisation après s'être abonnés qu'après le lancement et l'exécution de l'Agent d'instantané.
independent_agent true La publication a son propre Agent de distribution dédié.
false La publication utilise un Agent de distribution partagé, et chaque paire base de données de publication/base de données d'abonnement a un Agent partagé.
p2p_continue_onconflict true L'Agent de distribution continue à traiter les modifications lorsqu'un conflit est détecté.
Attention : nous vous recommandons d’utiliser la valeur par défaut de FALSE. Lorsque cette option est définie TRUEsur , l’Agent de distribution tente de converger les données dans la topologie en appliquant la ligne en conflit à partir du nœud qui a l’ID d’origine le plus élevé. Cette méthode ne garantit pas la convergence. Vous devez vous assurer que la topologie est cohérente après la détection d'un conflit. Pour plus d'informations, consultez « Gestion des conflits » dans Conflict Detection in Peer-to-Peer Replication.
false L'Agent de distribution cesse de traiter les modifications lorsqu'un conflit est détecté.
post_snapshot_script Spécifie l’emplacement d’un fichier de script Transact-SQL que le Agent de distribution s’exécute une fois que tous les autres scripts et données d’objet répliqués ont été appliqués pendant une synchronisation initiale.
pre_snapshot_script Spécifie l’emplacement d’un fichier de script Transact-SQL que le Agent de distribution s’exécute avant que tous les autres scripts et données d’objet répliqués aient été appliqués pendant une synchronisation initiale.
publish_to_ActiveDirectory true Ce paramètre est déconseillé et il n'est pris en charge que pour la compatibilité descendante des scripts. Vous ne pouvez plus ajouter d’informations de publication à Microsoft Active Directory.
false Supprime les informations de publication d'Active Directory.
queue_type sql Utilisez SQL Server pour stocker des transactions. Cette propriété ne peut être modifiée qu'en l'absence d'abonnements actifs.

Remarque : La prise en charge de l’utilisation de Microsoft Message Queuing a été supprimée. La spécification d’une valeur msmq pour la valeur entraîne une erreur.
redirected_publisher Nom de l’écouteur du groupe de disponibilité. Utilisé dans la réplication d’égal à égal lorsqu’un homologue se trouve dans un groupe de disponibilité. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server. Introduit dans SQL Server 2019 (15.x) CU 13. Pour plus d’informations, consultez Configurer un homologue dans le cadre d’un groupe de disponibilité ou Configurer les deux homologues dans les groupes de disponibilité.
repl_freq continuous Publie la sortie de toutes les transactions enregistrées dans le journal.
capture instantanée Publie uniquement les événements de synchronisation planifiés.
replicate_ddl 1 Les instructions DDL (Data Definition Language) exécutées sur le serveur de publication sont répliquées. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server.
0 Les instructions DDL ne sont pas répliquées. Cette propriété ne peut pas être modifiée pour les publications autres que SQL Server. La réplication des modifications de schéma ne peut pas être désactivée lorsque la réplication d'égal à égal est utilisée.
replicate_partition_switch true ALTER TABLE... Les instructions SWITCH exécutées sur la base de données publiée doivent être répliquées sur les Abonnés. Cette option est valide uniquement si allow_partition_switch a la valeur TRUE. Pour plus d’informations, consultez Répliquer des tables et des index partitionnés.
false ALTER TABLE... Les instructions SWITCH ne doivent pas être répliquées sur les abonnés.
rétention int représentant la période de rétention, en heures, pour l’activité d’abonnement. Si un abonnement n'est pas actif durant la période de rétention, il est supprimé.
snapshot_in_defaultfolder true Les fichiers d'instantané sont stockés dans le dossier d'instantané par défaut. Si alt_instantané_folderest également spécifié, instantané fichiers sont stockés à la fois dans les emplacements par défaut et dans d’autres emplacements.
false Les fichiers d’instantanés sont stockés dans l’autre emplacement spécifié par alt_instantané_folder.
statut active Les données de publication sont disponibles immédiatement pour les Abonnés lors de la création de la publication. Non pris en charge pour les serveurs de publication Oracle.
inactive Les données de publication ne sont pas disponibles pour les Abonnés lors de la création de la publication. Non pris en charge pour les serveurs de publication Oracle.
sync_method native Utilise la copie en bloc en mode natif de toutes les tables lors de la synchronisation des abonnements.
character Utilise la copie en bloc en mode caractère de toutes les tables lors de la synchronisation des abonnements.
Simultanée Utilise la copie en bloc en mode natif de toutes les tables, mais ne verrouille pas les tables au cours de l'instantané. Non valide pour la réplication d'instantané.
concurrent_c Utilise la copie en bloc en mode caractère de toutes les tables, mais ne verrouille pas les tables au cours du processus de génération de l'instantané. Non valide pour la réplication d'instantané.
Taskid Cette propriété est déconseillée et n'est plus prise en charge.
allow_drop true Active la DROP TABLE prise en charge des DLL pour les articles qui font partie de la réplication transactionnelle. Version minimale prise en charge : SQL Server 2014 (12.x) Service Pack 2 ou ultérieur et SQL Server 2016 (13.x) Service Pack 1 ou version ultérieure. Référence supplémentaire : Ko 3170123
false Désactive la DROP TABLE prise en charge des DLL pour les articles qui font partie de la réplication transactionnelle. Il s’agit de la valeur par défaut de cette propriété.
NULL (valeur par défaut) Retourne la liste des valeurs prises en charge pour la propriété.

[ @force_invalidate_snapshot = ] force_invalidate_snapshotReconnaît que l’action effectuée par cette procédure stockée peut invalider une instantané existante. force_invalidate_instantané est un peu, avec une valeur par défaut de 0.

  • 0 spécifie que les modifications apportées à l’article n’entraînent pas l’instantané non valide. Si la procédure stockée détecte que la modification requiert un nouvel instantané, une erreur se produit et aucune modification n'est effectuée.
  • 1 spécifie que les modifications apportées à l’article peuvent entraîner l’instantané non valide. Si certains abonnements existants nécessitent un nouvel instantané, cette valeur autorise le marquage de l'instantané existant comme obsolète, et la génération d'un nouvel instantané.
    Consultez la section Remarques pour connaître les propriétés dont la modification nécessite la génération d'un nouvel instantané.

[@force_reinit_subscription = ] force_reinit_subscription
Reconnaît que l’action effectuée par cette procédure stockée peut nécessiter la réinitialisation des abonnements existants. force_reinit_subscription est un peu avec une valeur par défaut de 0.

  • 0 spécifie que les modifications apportées à l’article n’entraînent pas la réinitialisation de l’abonnement. Si la procédure stockée détecte que la modification nécessite la réinitialisation des abonnements existants, une erreur se produit et aucune modification n'est effectuée.
  • 1 spécifie que les modifications apportées à l’article entraînent la réinitialisation de l’abonnement existant et donnent l’autorisation de réinitialiser l’abonnement.

[ @publisher = ] 'publisher' Spécifie un serveur de publication non-SQL Server. publisher est sysname, avec une valeur par défaut null.

Remarque

Publisher ne doit pas être utilisé lors de la modification des propriétés d’article sur un serveur de publication SQL Server.

Codet de retour

0 (réussite) ou 1 (échec)

Notes

sp_changepublication est utilisé dans la réplication instantané et la réplication transactionnelle.

Après avoir modifié l’une des propriétés suivantes, vous devez générer une nouvelle instantané, et vous devez spécifier la valeur 1 pour le paramètre force_invalidate_instantané.

  • 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

Pour répertorier les objets de publication dans Active Directory à l’aide du paramètre publish_to_active_directory , l’objet SQL Server doit déjà être créé dans Active Directory.

Impact de la synchronisation immédiate

Lorsque la synchronisation immédiate est activée, toutes les modifications dans le journal sont suivies immédiatement après la génération de la instantané initiale, même s’il n’existe aucun abonnement. Les modifications journalisées sont utilisées lorsqu’un client utilise la sauvegarde pour ajouter un nouveau nœud homologue. Une fois la sauvegarde restaurée, l’homologue est synchronisé avec toutes les autres modifications qui se produisent après la sauvegarde. Étant donné que les commandes sont suivies dans la base de données de distribution, la logique de synchronisation peut examiner le dernier LSN sauvegardé et l’utiliser comme point de départ, sachant que la commande est disponible si la sauvegarde a été effectuée au cours de la période de rétention maximale. (La valeur par défaut de la période de rétention minimale est de 0 heures et la période de rétention maximale est de 24 heures.)

Lorsque la synchronisation immédiate est désactivée, les modifications sont conservées au moins la période de rétention minimale et propre immédiatement pour toutes les transactions déjà répliquées. Si la synchronisation immédiate est désactivée et configurée avec la période de rétention par défaut, il est probable que les modifications nécessaires après la sauvegarde aient été nettoyées et que le nouveau nœud homologue ne soit pas correctement initialisé. La seule option conssite à suspendre la topologie. L'activation de la synchronisation immédiate offre davantage de flexibilité et est le paramètre recommandé pour la réplication P2P.

Exemple

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

Autorisations

Seuls les membres du rôle serveur fixe sysadmin ou db_owner rôle de base de données fixe peuvent exécuter sp_changepublication.

Voir aussi

Afficher et modifier les propriétés d’une publication
Changer les propriétés des publications et des articles
sp_addpublication (Transact-SQL)
sp_droppublication (Transact-SQL)
sp_helppublication (Transact-SQL)
Procédures stockées de réplication (Transact-SQL)