Partager via


sp_addmergepublication (Transact-SQL)

S’applique à : SQL Server Azure SQL Managed Instance

Crée une nouvelle publication de fusion. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données publiée.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_addmergepublication
    [ @publication = ] N'publication'
    [ , [ @description = ] N'description' ]
    [ , [ @retention = ] retention ]
    [ , [ @sync_mode = ] N'sync_mode' ]
    [ , [ @allow_push = ] N'allow_push' ]
    [ , [ @allow_pull = ] N'allow_pull' ]
    [ , [ @allow_anonymous = ] N'allow_anonymous' ]
    [ , [ @enabled_for_internet = ] N'enabled_for_internet' ]
    [ , [ @centralized_conflicts = ] N'centralized_conflicts' ]
    [ , [ @dynamic_filters = ] N'dynamic_filters' ]
    [ , [ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder' ]
    [ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
    [ , [ @pre_snapshot_script = ] N'pre_snapshot_script' ]
    [ , [ @post_snapshot_script = ] N'post_snapshot_script' ]
    [ , [ @compress_snapshot = ] N'compress_snapshot' ]
    [ , [ @ftp_address = ] N'ftp_address' ]
    [ , [ @ftp_port = ] ftp_port ]
    [ , [ @ftp_subdirectory = ] N'ftp_subdirectory' ]
    [ , [ @ftp_login = ] N'ftp_login' ]
    [ , [ @ftp_password = ] N'ftp_password' ]
    [ , [ @conflict_retention = ] conflict_retention ]
    [ , [ @keep_partition_changes = ] N'keep_partition_changes' ]
    [ , [ @allow_subscription_copy = ] N'allow_subscription_copy' ]
    [ , [ @allow_synctoalternate = ] N'allow_synctoalternate' ]
    [ , [ @validate_subscriber_info = ] N'validate_subscriber_info' ]
    [ , [ @add_to_active_directory = ] N'add_to_active_directory' ]
    [ , [ @max_concurrent_merge = ] max_concurrent_merge ]
    [ , [ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots ]
    [ , [ @use_partition_groups = ] N'use_partition_groups' ]
    [ , [ @publication_compatibility_level = ] N'publication_compatibility_level' ]
    [ , [ @replicate_ddl = ] replicate_ddl ]
    [ , [ @allow_subscriber_initiated_snapshot = ] N'allow_subscriber_initiated_snapshot' ]
    [ , [ @allow_web_synchronization = ] N'allow_web_synchronization' ]
    [ , [ @web_synchronization_url = ] N'web_synchronization_url' ]
    [ , [ @allow_partition_realignment = ] N'allow_partition_realignment' ]
    [ , [ @retention_period_unit = ] N'retention_period_unit' ]
    [ , [ @generation_leveling_threshold = ] generation_leveling_threshold ]
    [ , [ @automatic_reinitialization_policy = ] automatic_reinitialization_policy ]
    [ , [ @conflict_logging = ] N'conflict_logging' ]
[ ; ]

Arguments

[ @publication = ] N’publication'

Nom de la publication de fusion à créer. @publication est sysname, sans valeur par défaut, et ne doit pas être le mot cléALL. Le nom de la publication doit être unique dans la base de données.

[ @description = ] N’description'

Description de la publication. @description est nvarchar(255), avec la valeur par défaut NULL.

[ @retention = ] rétention

Période de rétention, en unités de période de rétention, pour lesquelles enregistrer les modifications pour la @publication donnée. @retention est int, avec la valeur par défaut 14. Les unités de période de rétention sont définies par @retention_period_unit. Si l’abonnement n’est pas synchronisé pendant la période de rétention et que les modifications en attente qu’elle aurait reçues sont supprimées par une opération de nettoyage sur le serveur de distribution, l’abonnement expire et doit être réinitialisé. La période de rétention maximale autorisée correspond au nombre de jours entre la date actuelle et le 31 décembre 9999.

Remarque

La période de rétention pour les publications de fusion offre un délai de grâce de 24 heures pour tenir compte des Abonnés situés dans différents fuseaux horaires. Si, par exemple, vous définissez une période de rétention d'un jour, la période de rétention réelle est de 48 heures.

[ @sync_mode = ] N’sync_mode'

Mode de la synchronisation initiale des abonnés à la publication. @sync_mode est nvarchar(10) et peut être l’une des valeurs suivantes.

Valeur Description
native (valeur par défaut) Produit une copie par bloc en mode natif de toutes les tables.
character Produit une copie par bloc en mode caractère de toutes les tables. Requis pour prendre en charge les abonnés SQL Server Compact et non-SQL Server.

[ @allow_push = ] N’allow_push'

Indique si des abonnements par envoi de données (push) peuvent être créés pour la publication concernée. @allow_push est nvarchar(5), avec une valeur par défaut true, qui autorise les abonnements push sur la publication.

[ @allow_pull = ] N’allow_pull'

Indique si des abonnements par extraction de données (pull) peuvent être créés pour la publication concernée. @allow_pull est nvarchar(5), avec une valeur par défaut true, qui autorise les abonnements par extraction sur la publication. Vous devez spécifier true pour prendre en charge les abonnés SQL Server Compact.

[ @allow_anonymous = ] N’allow_anonymous'

Indique si des abonnements anonymes peuvent être créés pour la publication concernée. @allow_anonymous est nvarchar(5), avec une valeur par défaut true, qui autorise les abonnements anonymes sur la publication. Pour prendre en charge les abonnés SQL Server Compact, vous devez spécifier true.

[ @enabled_for_internet = ] N’enabled_for_internet'

Indique si la publication est activée pour Internet et détermine si le protocole de transfert de fichiers (FTP) peut être utilisé pour le transfert des fichiers d'instantané à un abonné. @enabled_for_internet est nvarchar(5), avec la valeur par défaut false. Si true, les fichiers de synchronisation de la publication sont placés dans le C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp répertoire. L'utilisateur doit créer le répertoire FTP. Si falsela publication n’est pas activée pour l’accès à Internet.

[ @centralized_conflicts = ] N’centralized_conflicts'

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts. Utilisez @conflict_logging pour spécifier l’emplacement où les enregistrements en conflit sont stockés.

[ @dynamic_filters = ] N’dynamic_filters'

Permet à la publication de fusion d'utiliser des filtres de lignes paramétrables. @dynamic_filters est nvarchar(5), avec la valeur par défaut false.

Remarque

Vous ne devez pas spécifier ce paramètre, mais autoriser SQL Server à déterminer automatiquement si les filtres de lignes paramétrables sont utilisés. Si vous spécifiez une valeur de @dynamic_filters, vous devez définir un filtre de true lignes paramétrable pour l’article. Pour plus d'informations, voir Définir et modifier un filtre de lignes paramétrable pour un article de fusion.

[ @snapshot_in_defaultfolder = ] N’snapshot_in_defaultfolder'

Spécifie si les fichiers d’instantané sont stockés dans le dossier par défaut. @snapshot_in_defaultfolder est nvarchar(5), avec la valeur par défaut true. Si true, les fichiers d’instantané se trouvent dans le dossier par défaut. Si false, les fichiers d’instantané sont stockés dans l’autre emplacement spécifié par @alternate_snapshot_folder. Les emplacements secondaires peuvent se trouver sur un autre serveur, un lecteur réseau ou un support amovible (tel qu'un CD-ROM ou des disques amovibles). Vous pouvez également enregistrer les fichiers d'instantané sur un site FTP, pour qu'ils soient récupérés ultérieurement par l'abonné. Ce paramètre peut être true et avoir toujours un emplacement spécifié par @alt_snapshot_folder. Cette combinaison spécifie que les fichiers d’instantanés sont stockés à la fois dans les emplacements par défaut et dans d’autres emplacements.

[ @alt_snapshot_folder = ] N’alt_snapshot_folder'

Indique l'emplacement du dossier de remplacement pour l'instantané. @alt_snapshot_folder est nvarchar(255), avec la valeur par défaut NULL.

[ @pre_snapshot_script = ] N’pre_snapshot_script'

Spécifie un pointeur vers un .sql emplacement de fichier. @pre_snapshot_script est nvarchar(255), avec la valeur par défaut NULL. Le Agent de fusion exécute le script de pré-instantané avant l’un des scripts d’objet répliqués lors de l’application de l’instantané sur un Abonné. Le script est exécuté dans le contexte de sécurité utilisé par l'Agent de fusion lors de la connexion à la base de données d'abonnement. Les scripts de pré-instantané ne sont pas exécutés sur les abonnés SQL Server Compact.

[ @post_snapshot_script = ] N’post_snapshot_script'

Spécifie un pointeur vers un .sql emplacement de fichier. @post_snapshot_script est nvarchar(255), avec la valeur par défaut NULL. L'Agent de fusion exécute le script de post-instantané après que tous les autres scripts d'objets et données répliqués ont été appliqués lors d'une synchronisation initiale. Le script est exécuté dans le contexte de sécurité utilisé par l'Agent de fusion lors de la connexion à la base de données d'abonnement. Les scripts post-instantanés ne sont pas exécutés sur les abonnés SQL Server Compact.

[ @compress_snapshot = ] N’compress_snapshot'

Spécifie que l’instantané écrit à l’emplacement @alt_snapshot_folder sera compressé au format CAB Microsoft. @compress_snapshot est nvarchar(5), avec la valeur par défaut false.

  • false spécifie que l’instantané ne doit pas être compressé.

  • true spécifie que l’instantané sera compressé.

Les fichiers d’instantané dont la taille est supérieure à 2 Go ne peuvent pas être compressés. Les fichiers d'instantané compressés sont décompressés à l'emplacement d'exécution de l'Agent de fusion. Les abonnements par extraction de données sont généralement utilisés avec des instantanés compressés, afin que les fichiers soient décompressés chez l'abonné. L’instantané dans le dossier par défaut ne peut pas être compressé. Pour prendre en charge les abonnés SQL Server Compact, vous devez spécifier false.

[ @ftp_address = ] N’ftp_address'

Adresse réseau du service FTP du serveur de distribution. @ftp_address est sysname, avec la valeur par défaut NULL. Indique l'emplacement à partir duquel l'Agent de fusion d'un abonné peut extraire les fichiers d'instantané de la publication. Étant donné que cette propriété est stockée pour chaque publication, chaque publication peut avoir une @ftp_address différente. La publication doit prendre en charge la propagation des instantanés à l'aide du protocole FTP.

[ @ftp_port = ] ftp_port

Numéro de port du service FTP pour le serveur de distribution. @ftp_port est int, avec la valeur par défaut 21. Indique l'emplacement à partir duquel l'Agent de fusion d'un Abonné peut extraire les fichiers d'instantané de la publication. Étant donné que cette propriété est stockée pour chaque publication, chaque publication peut avoir sa propre @ftp_port.

[ @ftp_subdirectory = ] N’ftp_subdirectory'

Spécifie l’emplacement où les fichiers d’instantanés sont disponibles pour la Agent de fusion de l’abonné à récupérer si la publication prend en charge la propagation d’instantanés à l’aide de FTP. @ftp_subdirectory est nvarchar(255), avec la valeur par défaut ftp. Étant donné que cette propriété est stockée pour chaque publication, chaque publication peut avoir sa propre @ftp_subdirctory ou choisir d’avoir aucun sous-répertoire, indiqué avec une NULL valeur.

Lors de la prégénération d'instantanés pour les publications avec des filtres paramétrables, l'instantané de données pour chaque partition d'abonné doit se trouver dans son propre dossier. La structure de répertoire pour les instantanés prégénérés à l'aide de FTP doit répondre aux conditions suivantes :

<alternate_snapshot_folder>\ftp\<publisher_publicationDB_publication>\<partitionID>.

Remarque

Les valeurs de l’exemple précédent (entre crochets angle) dépendent des spécificités de la partition de publication et d’Abonné.

[ @ftp_login = ] N’ftp_login'

Nom d'utilisateur, utilisé pour la connexion au service FTP. @ftp_login est sysname, avec la valeur par défaut anonymous.

[ @ftp_password = ] N’ftp_password'

Mot de passe utilisateur utilisé pour se connecter au service FTP. @ftp_password est sysname, avec la valeur par défaut NULL.

Important

N’utilisez pas de mot de passe vide. Utilisez un mot de passe fort.

[ @conflict_retention = ] conflict_retention

Indique la période de rétention, en jours, pendant laquelle les conflits sont conservés. @conflict_retention est int, avec une valeur par défaut de jours avant que la ligne de 14 conflit ne soit vidée de la table de conflit.

[ @keep_partition_changes = ] N’keep_partition_changes'

Spécifie s’il faut activer les optimisations des modifications de partition lorsque les partitions précomputées ne peuvent pas être utilisées. @keep_partition_changes est nvarchar(5), avec la valeur par défaut true.

  • false signifie que les modifications de partition ne sont pas optimisées et que les partitions précomputées ne sont pas utilisées, les partitions envoyées à tous les Abonnés sont vérifiées lorsque les modifications de données dans une partition sont vérifiées.

  • true signifie que les modifications de partition sont optimisées et que seuls les Abonnés ayant des lignes dans les partitions modifiées sont affectés.

Lorsque vous utilisez des partitions précomputées, définissez @use_partition_groups sur true et définissez @keep_partition_changes sur false. Pour plus d’informations, consultez Filtres paramétrables - Optimiser pour les partitions précomputées.

Remarque

Si vous spécifiez une valeur pour true @keep_partition_changes, spécifiez la valeur du paramètre -MaxNetworkOptimizationDe l’Agent d’instantané1. Pour plus d’informations sur ce paramètre, consultez l’Agent d’instantané de réplication. Pour plus d’informations sur la façon de spécifier des paramètres d’agent, consultez l’administration de l’agent de réplication.

Avec les abonnés SQL Server Compact, @keep_partition_changes devez être défini pour true vous assurer que les suppressions sont correctement propagées. Lorsqu’il est défini falsesur , l’abonné peut avoir plus de lignes que prévu.

[ @allow_subscription_copy = ] N’allow_subscription_copy'

Active ou désactive la possibilité de copier les bases de données d'abonnement qui sont abonnées à la publication. @allow_subscription_copy est nvarchar(5), avec la valeur par défaut false. La taille de la base de données d’abonnement copiée doit être inférieure à 2 Go.

[ @allow_synctoalternate = ] N’allow_synctoalternate'

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

[ @validate_subscriber_info = ] N’validate_subscriber_info'

Répertorie les fonctions utilisées pour définir une partition d'abonné des données publiées lorsque les filtres de lignes paramétrables sont utilisés. @validate_subscriber_info est nvarchar(500), avec la valeur par défaut NULL. Ces informations sont utilisées par l'Agent de fusion pour valider la partition de l'abonné. Par exemple, si SUSER_SNAME est utilisé dans le filtre de lignes paramétrable, le paramètre doit être @validate_subscriber_info=N'SUSER_SNAME().

Remarque

Vous ne devez pas spécifier ce paramètre, mais autoriser SQL Server à déterminer automatiquement le critère de filtrage.

[ @add_to_active_directory = ] N’add_to_active_directory'

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts. Vous ne pouvez plus ajouter d’informations de publication à Microsoft Active Directory.

[ @max_concurrent_merge = ] max_concurrent_merge

Nombre maximal de processus de fusion simultanés autorisés. @max_concurrent_merge est int, avec la valeur par défaut 0. Valeur pour 0 laquelle cela signifie qu’il n’existe aucune limite au nombre de processus de fusion simultanés en cours d’exécution à un moment donné.

Cette propriété permet de définir un nombre maximal de processus de fusion simultanés exécutables sur une publication de fusion à un moment donné. S’il existe plus de processus de fusion planifiés en même temps que la valeur autorisée à s’exécuter, les travaux excédentaires sont placés dans une file d’attente et attendent qu’un processus de fusion en cours d’exécution se termine.

[ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots

Nombre maximal de sessions de l'Agent d'instantané qui peuvent être exécutées simultanément pour générer des instantanés de données filtrées pour les partitions d'abonnés. @max_concurrent_dynamic_snapshots est int, avec la valeur par défaut 0. Si 0, il n’existe aucune limite au nombre de sessions d’instantanés. S’il existe plus de processus d’instantanés planifiés en même temps que la valeur autorisée à s’exécuter, les travaux excédentaires sont placés dans une file d’attente et attendent qu’un processus d’instantané en cours d’exécution se termine.

[ @use_partition_groups = ] N’use_partition_groups'

Spécifie que les partitions précalculées doivent être utilisées pour optimiser le processus de synchronisation. @use_partition_groups est nvarchar(5) et peut être l’une des valeurs suivantes :

Valeur Description
true La publication utilise des partitions précalculées.
false La publication n’utilise pas de partitions précomputées.
NULL (valeur par défaut) Le système détermine la stratégie de partitionnement.

Les partitions précalculées sont utilisées par défaut. Pour éviter d’utiliser des partitions précomputées, @use_partition_groups doit être défini sur false. Quand NULL, le système décide si des partitions précomputées peuvent être utilisées. Si les partitions précomputées ne peuvent pas être utilisées, cette valeur devient false sans générer d’erreurs. Dans ce cas, @keep_partition_changes peut être défini pour true fournir une optimisation. Pour plus d’informations, consultez Filtres paramétrables - Filtres de lignes paramétrables et filtres paramétrables - Optimiser pour les partitions précomputées.

[ @publication_compatibility_level = ] N’publication_compatibility_level'

Indique la compatibilité descendante de la publication. @publication_compatibility_level est nvarchar(6) et peut être l’une des valeurs suivantes :

Valeur Version
90RTM SQL Server 2005 (9.x)
100RTM SQL Server 2008 (10.0.x)

[ @replicate_ddl = ] replicate_ddl

Précise si la réplication de schéma est prise en charge pour la publication. @replicate_ddl est int, avec la valeur par défaut NULL. 1 indique que les instructions DDL (Data Definition Language) exécutées sur le serveur de publication sont répliquées et 0 indique que les instructions DDL ne sont pas répliquées. Pour plus d’informations, consultez Modifier le schéma dans les bases de données de publication.

Le paramètre @replicate_ddl est respecté lorsqu’une instruction DDL ajoute une colonne. Le paramètre @replicate_ddl est ignoré lorsqu’une instruction DDL modifie ou supprime une colonne pour les raisons suivantes.

  • Lorsqu’une colonne est supprimée, sysarticlecolumns doit être mise à jour pour empêcher les nouvelles instructions DML d’inclure la colonne supprimée qui entraînerait l’échec de l’agent de distribution. Le paramètre @replicate_ddl est ignoré, car la réplication doit toujours répliquer la modification du schéma.

  • Lorsqu’une colonne est modifiée, le type de données source ou la possibilité de valeur Null peuvent avoir changé, ce qui entraîne la modification d’instructions DML contenant une valeur qui peut ne pas être compatible avec la table sur l’abonné. Ces instructions DML peuvent entraîner l'échec de l'agent de distribution. Le paramètre @replicate_ddl est ignoré, car la réplication doit toujours répliquer la modification du schéma.

  • Lorsqu’une instruction DDL ajoute une nouvelle colonne, sysarticlecolumns n’inclut pas la nouvelle colonne. Les instructions DML n’essaient pas de répliquer des données pour la nouvelle colonne. Le paramètre est respecté parce que la réplication ou la réplication DDL est acceptable.

[ @allow_subscriber_initiated_snapshot = ] N’allow_subscriber_initiated_snapshot'

Indique si les abonnés de cette publication peuvent initier le processus d'instantané pour générer l'instantané filtré de leur partition de données. @allow_subscriber_initiated_snapshot est nvarchar(5), avec la valeur par défaut false. true indique que les Abonnés peuvent lancer le processus d’instantané.

[ @allow_web_synchronization = ] N’allow_web_synchronization'

Spécifie si la publication est activée pour la synchronisation web. @allow_web_synchronization est nvarchar(5), avec la valeur par défaut false. true spécifie que les abonnements à cette publication peuvent être synchronisés via HTTPS. Pour plus d’informations, voir Web Synchronization for Merge Replication. Pour prendre en charge les abonnés SQL Server Compact, vous devez spécifier true.

[ @web_synchronization_url = ] N’web_synchronization_url'

Spécifie la valeur par défaut de l'URL Internet utilisée pour la synchronisation Web. @web_synchronization_url est nvarchar(500), avec la valeur par défaut NULL. Définit l’URL Internet par défaut si elle n’est pas définie explicitement lorsque sp_addmergepullsubscription_agent est exécutée.

[ @allow_partition_realignment = ] N’allow_partition_realignment'

Indique si les suppressions sont envoyées à l'abonné lorsque la modification de la ligne sur le serveur de publication amène celui-ci à modifier sa partition. @allow_partition_realignment est nvarchar(5), avec la valeur par défaut true.

  • true envoie des suppressions à l’Abonné pour refléter les résultats d’une modification de partition en supprimant les données qui ne font plus partie de la partition de l’Abonné.

  • false laisse les données d’une ancienne partition sur l’Abonné, où les modifications apportées à ces données sur le serveur de publication ne sont pas répliquées sur cet Abonné, mais les modifications apportées sur l’Abonné sont répliquées sur le serveur de publication.

Définir @allow_partition_realignment à false utiliser pour conserver des données dans un abonnement à partir d’une ancienne partition lorsque les données doivent être accessibles à des fins historiques.

Remarque

Les données qui restent sur l’Abonné suite à la définition de @allow_partition_realignment doivent false être traitées comme s’il s’agissait d’une lecture seule. Toutefois, cela n’est pas appliqué par le système de réplication.

[ @retention_period_unit = ] N’retention_period_unit'

Spécifie les unités pour la période de rétention définie par @retention. @retention_period_unit est nvarchar(10) et peut être l’une des valeurs suivantes.

Valeur Version
day (valeur par défaut) La période de rétention est spécifiée en jours.
week La période de rétention est spécifiée en semaines.
month La période de rétention est spécifiée en mois.
year La période de rétention est spécifiée en années.

[ @generation_leveling_threshold = ] generation_leveling_threshold

Spécifie le nombre de modifications contenues dans une génération. Une génération est une collection de modifications remises à un serveur de publication ou à un Abonné. @generation_leveling_threshold est int, avec la valeur par défaut 1000.

[ @automatic_reinitialization_policy = ] automatic_reinitialization_policy

Spécifie si les modifications sont téléchargées à partir de l’Abonné avant une réinitialisation automatique requise par une modification de la publication, où une valeur d’a 1 été spécifiée pour @force_reinit_subscription. @automatic_reinitialization_policy est bit, avec la valeur par défaut 0.

1 signifie que les modifications sont chargées à partir de l’Abonné avant qu’une réinitialisation automatique ne se produise.

Important

Si vous ajoutez, supprimez ou modifiez un filtre paramétrable, les modifications en attente sur l’Abonné ne peuvent pas être chargées sur le serveur de publication pendant la réinitialisation. Si vous voulez télécharger les modifications en attente, synchronisez tous les abonnements avant de modifier le filtre.

[ @conflict_logging = ] N’conflict_logging'

Spécifie l'emplacement de stockage des enregistrements de conflits. @conflict_logging est nvarchar(15) et peut être l’une des valeurs suivantes :

Valeur Description
publisher Les enregistrements en conflit sont stockés sur le serveur de publication.
subscriber Les enregistrements en conflit sont stockés dans l'Abonné à l'origine du conflit. Non pris en charge pour les abonnés SQL Server Compact.
both Les enregistrements en conflit sont stockés dans le serveur de publication et l'Abonné.
NULL (valeur par défaut) La réplication définit automatiquement @conflict_logging both quand la valeur @publication_compatibility_level est 90RTM et dans publisher tous les autres cas.

Valeurs des codes de retour

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

Notes

sp_addmergepublication est utilisé dans la réplication de fusion.

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

Si plusieurs publications existent qui publient le même objet de base de données, seules les publications avec une valeur @replicate_ddl de 1 réplicationALTER TABLE, , ALTER VIEWALTER PROCEDURE, ALTER FUNCTIONet ALTER TRIGGER DDL. Toutefois, une ALTER TABLE DROP COLUMN instruction DDL est répliquée par toutes les publications qui publient la colonne supprimée.

Pour les abonnés SQL Server Compact, la valeur de @alternate_snapshot_folder est utilisée uniquement lorsque la valeur de @snapshot_in_default_folder est false.

Une fois la réplication DDL activée (@replicate_ddl = 1) pour une publication, afin d’apporter des modifications DDL non réplicables à la publication, sp_changemergepublication (Transact-SQL) doit d’abord être exécutée pour définir @replicate_ddl sur 0. Une fois que les instructions DDL non réplicables ont été émises, sp_changemergepublication vous pouvez réexécuter la réplication DDL pour réactiver la réplication DDL.

Exemples

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. For information about 
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".

--Declarations for adding a merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2022'; 
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @login = $(Login);
SET @password = $(Password);

-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption 
  @dbname=@publicationDB, 
  @optname=N'merge publish',
  @value = N'true' 

-- Create a new merge publication, explicitly setting the defaults. 
USE [AdventureWorks2022]
EXEC sp_addmergepublication 
-- These parameters are optional.
  @publication = @publication,
  -- optional parameters 
  @description = N'Merge publication of AdventureWorks2022.',
  @publication_compatibility_level  = N'120RTM';

-- Create a new snapshot job for the publication.
EXEC sp_addpublication_snapshot 
  @publication = @publication, 
  @job_login = @login, 
  @job_password = @password;
GO

autorisations

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