Partager via


sp_changepublication (Transact-SQL)

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

Icône Lien de rubrique 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 publication. publication est de type sysname, avec NULL comme valeur par défaut.

  • [ @property = ] 'property'
    Propriété de publication à modifier. property est de type nvarchar(255).

  • [ @value = ] 'value'
    Nouvelle valeur de la propriété. value est de type nvarchar(255), avec NULL comme valeur 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

    Il est possible de créer des abonnements anonymes pour la publication concernée, et immediate_sync doit également prendre la valeur true. 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 non-Microsoft SQL Server.

     

    false

    Les abonnés doivent utiliser l'instantané initial. Cette propriété ne peut pas être modifiée pour les publications non-SQL Server.

    allow_partition_switch

    true

    Les instructions ALTER TABLE…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

    Les instructions ALTER TABLE…SWITCH ne peuvent pas être exécutées sur la base de données publiée.

    allow_pull

    true

    Indique si des 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 non-SQL Server.

     

    false

    Les abonnements par extraction de données (pull) ne sont pas autorisés pour la publication concernée. Cette propriété ne peut pas être modifiée pour les publications non-SQL Server.

    allow_push

    true

    Indique si des 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 non-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 non-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 non-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 non-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 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. Pas de prise en charge pour les serveurs de publication Oracle.

     

    sub reinit

    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. Pas de prise en charge pour les serveurs de publication Oracle.

     

    sub wins

    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. Pas de prise en charge pour les serveurs de publication Oracle.

    conflict_retention

     

    Nombre de type int, exprimé en jours, qui spécifie la période de rétention des conflits. La rétention par défaut est de 14 jours. 0 signifie qu'aucun nettoyage de conflit n'est nécessaire. Pas de prise 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 des Abonnés non SQL Server. enabled_for_het_sub ne peut pas être modifié s'il existe des abonnements à la publication. Il peut être nécessaire d'exécuter sp_changepublication (Transact-SQL) pour se conformer aux conditions requises ci-dessous avant de définir enabled_for_het_sub sur TRUE :

    • allow_queued_tran doit avoir la valeur false.

    • allow_sync_tran doit avoir la valeur false.

    Si vous modifiez enabled_for_het_sub pour lui donner la valeur true, vous risquez de modifier des paramètres existants de la publication. Pour plus d'informations, consultez Abonnés non-SQL Server. Cette propriété ne peut pas être modifiée pour les publications non-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 non-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 non-SQL Server.

     

    false

    La publication n'est pas activée pour Internet. Cette propriété ne peut pas être modifiée pour les publications non-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 non-SQL Server.

    Pour définir enabled_for_p2p sur true, les restrictions suivantes s'appliquent :

    • allow_anonymous doit avoir la valeur false.

    • allow_dts doit avoir la valeur false.

    • allow_initialize_from_backup doit avoir la valeur true.

    • allow_queued_tran doit avoir la valeur false.

    • allow_sync_tran doit avoir la valeur false.

    • enabled_for_het_sub doit avoir la valeur false.

    • independent_agent doit avoir la valeur true.

    • repl_freq doit avoir la valeur continuous.

    • replicate_ddl doit avoir la valeur 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 non-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 non-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 non-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 non-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 non-SQL Server.

    ftp_subdirectory

     

    Indique l'emplacement où sont créés les fichiers d'instantanés si la publication prend en charge la propagation d'instantanés par FTP. Cette propriété ne peut pas être modifiée pour les publications non-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 avoir la valeur true. 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é.

    AttentionAttention

    Nous vous recommandons d'utiliser la valeur par défaut FALSE. Lorsque cette option a la valeur TRUE, l'Agent de distribution tente de converger les données dans la topologie en appliquant la ligne en conflit du nœud doté de l'ID d'appelant 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 Détection de conflit dans la réplication d'égal à égal.

    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 l'Agent de distribution exécute après l'application de tous les autres scripts et données d'objet répliqués au cours d'une synchronisation initiale.

    pre_snapshot_script

     

    Spécifie l'emplacement d'un fichier de script Transact-SQL que l'Agent de distribution exécute avant l'application de tous les autres scripts et données d'objet répliqués au cours d'une synchronisation initiale.

    publish_to_ActiveDirectory

    true

    Ce paramètre est déconseillé et n'est pris en charge que pour la compatibilité descendante des scripts. Vous ne pouvez plus ajouter d'informations de publication dans Microsoft Active Directory.

     

    false

    Supprime les informations de publication d'Active Directory.

    queue_type

    sql

    Utilise SQL Server pour stocker les 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é arrêtée. Si vous spécifiez la valeur msmq pour value, une erreur se produit.

    repl_freq

    continuous

    Publie la sortie de toutes les transactions enregistrées dans le journal.

     

    snapshot

    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 non-SQL Server.

     

    0

    Les instructions DDL ne sont pas répliquées. Cette propriété ne peut pas être modifiée pour les publications non-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

    Les instructions ALTER TABLE…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

    Les instructions ALTER TABLE…SWITCH ne doivent pas être répliquées sur les Abonnés.

    retention

     

    Nombre de type int représentant la période de rétention de l'activité d'abonnement, exprimée en heures. 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és par défaut. Si la valeur de alt_snapshot_folderest également spécifiée, les fichiers d'instantané sont stockés dans les emplacements par défaut et de remplacement.

     

    false

    Les fichiers d'instantané sont stockés dans le dossier de remplacement spécifié par alt_snapshot_folder.

    status

    active

    Les données de publication sont disponibles immédiatement pour les Abonnés lors de la création de la publication. Pas de prise 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. Pas de prise 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.

     

    concurrent

    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.

    NULL (valeur par défaut)

     

    Renvoie la liste des valeurs prises en charge pour property.

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Signale que l'action entreprise par cette procédure stockée peut invalider un instantané existant. force_invalidate_snapshot est de type bit, avec 0 comme valeur par défaut.

    0 indique que les modifications apportées à l'article ne doivent pas invalider l'instantané. Si la procédure stockée détecte que la modification requiert un nouvel instantané, une erreur est générée et aucune modification n'est effectuée.

    1 indique que les modifications apportées à l'article peuvent invalider l'instantané. 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
    Confirme que l'action entreprise par cette procédure stockée peut nécessiter la réinitialisation des abonnements existants. force_reinit_subscription est de type bit, avec 0 comme valeur par défaut.

    0 indique que les modifications apportées à l'article ne doivent pas provoquer la réinitialisation de l'abonnement. Si la procédure stockée détecte que la modification requiert la réinitialisation des abonnements existants, une erreur est générée et aucune modification n'est effectuée.

    1 indique que les modifications apportées à l'article entraînent la réinitialisation d'abonnements existants, et autorise la réinitialisation de ces abonnements.

  • [ @publisher = ] 'publisher'
    Spécifie un serveur de publication non SQL Server. publisher est de type sysname, avec NULL comme valeur par défaut.

    [!REMARQUE]

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

Valeurs des codes de retour

0 (succès) ou 1 (échec)

Notes

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

Le changement de l'une quelconque des propriétés ci-dessous nécessite la génération d'un nouvel instantané, et vous devez spécifier une valeur de 1 pour le paramètre 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

Pour répertorier les objets de publication figurant dans l'annuaire Active Directory à l'aide du paramètre publish_to_Active_Directory, l'objet SQL Server doit déjà avoir été créé dans l'annuaire.

Impact de la synchronisation immédiate

Lorsque la synchronisation immédiate est activée, toutes les modifications du journal sont suivies immédiatement après la génération de l'instantané initial, même en l'absence d'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 toute autre modification apportée après la sauvegarde. Les commandes étant suivies dans la base de données de distribution, la logique de synchronisation peut rechercher le dernier numéro séquentiel dans le journal sauvegardé et l'utiliser comme point de départ, sachant que la commande sera disponible si la sauvegarde a été effectuée au cours de la période de rétention maximale. (La valeur par défaut est 0 heure pour la période de rétention minimale et 24 heures pour la période de rétention maximale).

Lorsque la synchronisation immédiate est désactivée, les modifications sont conservées au moins pendant la période de rétention minimale et immédiatement nettoyées pour toutes les transactions qui sont 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 [AdventureWorks2012]
EXEC sp_changepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0
GO

Autorisations

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

Voir aussi

Référence

sp_addpublication (Transact-SQL)

sp_droppublication (Transact-SQL)

sp_helppublication (Transact-SQL)

Procédures stockées de réplication (Transact-SQL)

Concepts

Afficher et modifier les propriétés d'une publication

Modifier les propriétés des publications et des articles