sp_addmergepublication (Transact-SQL)
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 de Transact-SQL
Syntaxe
sp_addmergepublication [ @publication = ] 'publication'
[ , [ @description = ] 'description'
[ , [ @retention = ] retention ]
[ , [ @sync_mode = ] 'sync_mode' ]
[ , [ @allow_push = ] 'allow_push' ]
[ , [ @allow_pull = ] 'allow_pull' ]
[ , [ @allow_anonymous = ] 'allow_anonymous' ]
[ , [ @enabled_for_internet = ] 'enabled_for_internet' ]
[ , [ @centralized_conflicts = ] 'centralized_conflicts' ]
[ , [ @dynamic_filters = ] 'dynamic_filters' ]
[ , [ @snapshot_in_defaultfolder = ] 'snapshot_in_default_folder' ]
[ , [ @alt_snapshot_folder = ] 'alternate_snapshot_folder' ]
[ , [ @pre_snapshot_script = ] 'pre_snapshot_script' ]
[ , [ @post_snapshot_script = ] 'post_snapshot_script' ]
[ , [ @compress_snapshot = ] 'compress_snapshot' ]
[ , [ @ftp_address = ] 'ftp_address' ]
[ , [ @ftp_port = ] ftp_port ]
[ , [ @ftp_subdirectory = ] 'ftp_subdirectory' ]
[ , [ @ftp_login = ] 'ftp_login' ]
[ , [ @ftp_password = ] 'ftp_password' ]
[ , [ @conflict_retention = ] conflict_retention ]
[ , [ @keep_partition_changes = ] 'keep_partition_changes' ]
[ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ]
[ , [ @allow_synctoalternate = ] 'allow_synctoalternate' ]
[ , [ @validate_subscriber_info = ] 'validate_subscriber_info' ]
[ , [ @add_to_active_directory = ] 'add_to_active_directory' ]
[ , [ @max_concurrent_merge = ] maximum_concurrent_merge ]
[ , [ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots ]
[ , [ @use_partition_groups = ] 'use_partition_groups' ]
[ , [ @publication_compatibility_level = ] 'backward_comp_level' ]
[ , [ @replicate_ddl = ] replicate_ddl ]
[ , [ @allow_subscriber_initiated_snapshot = ] 'allow_subscriber_initiated_snapshot' ]
[ , [ @allow_web_synchronization = ] 'allow_web_synchronization' ]
[ , [ @web_synchronization_url = ] 'web_synchronization_url' ]
[ , [ @allow_partition_realignment = ] 'allow_partition_realignment' ]
[ , [ @retention_period_unit = ] 'retention_period_unit' ]
[ , [ @generation_leveling_threshold = ] generation_leveling_threshold ]
[ , [ @automatic_reinitialization_policy = ] automatic_reinitialization_policy ]
[ , [ @conflict_logging = ] 'conflict_logging' ]
Arguments
[ @publication = ] 'publication'
Nom de la publication de fusion à créer. publication est de type 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 = ] 'description'
Description de la publication description est de type nvarchar(255), avec NULL comme valeur par défaut.[ @retention = ] retention
Période de rétention, en unités de période de rétention, pendant laquelle les modifications sont enregistrées pour la publication. retention est de type int, avec une valeur par défaut de 14 unités. 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'il devait recevoir ont été 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 est le nombre de jours entre le 31 décembre, 9999 et la date actuelle.[!REMARQUE]
La période de rétention pour les publications de fusion bénéficie d'une période de grâce de 24 heures pour les besoins des abonnés se trouvant dans des fuseaux horaires différents. 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 = ] 'sync_mode'
Mode de la synchronisation initiale des abonnés à la publication. sync_mode est de type nvarchar(10) et peut prendre l'une des valeurs suivantes.Valeur
Description
native (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. Nécessaire à la prise en charge d'Abonnés Microsoft SQL Server Compact et non-SQL Server.
[ @allow_push = ] 'allow_push'
Indique si des abonnements par envoi de données (push) peuvent être créés pour la publication concernée. allow_push est de type nvarchar(5), avec TRUE comme valeur par défaut, ce qui autorise les abonnements par envoi de données (push) sur la publication.[ @allow_pull = ] 'allow_pull'
Indique si des abonnements par extraction de données (pull) peuvent être créés pour la publication concernée. allow_pull est de type nvarchar(5), avec TRUE comme valeur par défaut, ce qui autorise les abonnements par extraction de données (pull) sur la publication. Vous devez spécifier la valeur True pour prendre en charge les abonnés SQL Server Compact.[ @allow_anonymous = ] 'allow_anonymous'
Indique si des abonnements anonymes peuvent être créés pour la publication concernée. allow_anonymous est de type nvarchar(5), avec TRUE comme valeur par défaut, qui autorise les abonnements anonymes pour la publication. Pour prendre en charge les Abonnés SQL Server Compact, vous devez spécifier la valeur true.[ @enabled_for_internet = ] '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 de type nvarchar(5), avec FALSE comme valeur par défaut. Si la valeur est true, les fichiers de synchronisation de la publication sont placés dans le répertoire C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp. L'utilisateur doit créer le répertoire FTP. Si la valeur est false, la publication n'est pas activée pour l'accès Internet.[ @centralized_conflicts =] 'centralized_conflicts'
Ce paramètre est déconseillé et n'est pris en charge que pour des raisons de compatibilité descendante des scripts. Utilisez conflict_logging pour spécifier l'emplacement où se trouvent les enregistrements de conflits.[ @dynamic_filters =] 'dynamic_filters'
Permet à la publication de fusion d'utiliser des filtres de lignes paramétrables. dynamic_filters est de type nvarchar(5), avec FALSE comme valeur par défaut.[!REMARQUE]
Vous ne devez pas spécifier vous-même ce paramètre mais autoriser SQL Server à déterminer automatiquement si les filtres de lignes paramétrables sont utilisés. Si vous spécifiez la valeur true pour dynamic_filters, vous devez définir un filtre de lignes paramétrable pour l'article. Pour plus d'informations, consultez Définir et modifier un filtre de lignes paramétrable pour un article de fusion.
[ @snapshot_in_defaultfolder = ] 'snapshot_in_default_folder'
Indique si les fichiers d'instantané sont stockés dans le dossier par défaut. snapshot_in_default_folder est de type nvarchar(5), avec TRUE comme valeur par défaut. Si la valeur est true, les fichiers d'instantané se trouvent dans le dossier par défaut. Si la valeur est false, les fichiers d'instantané sont stockés dans le dossier de remplacement 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é. Notez que ce paramètre peut avoir la valeur true et néanmoins avoir un emplacement spécifié par alt_snapshot_folder. Cette combinaison indique que les fichiers d'instantané sont stockés dans les emplacements par défaut et secondaires.[ @alt_snapshot_folder = ] 'alternate_snapshot_folder'
Spécifie l'emplacement du dossier alternatif de l'instantané. alternate_snapshot_folder est de type nvarchar(255), avec NULL comme valeur par défaut.[ @pre_snapshot_script = ] 'pre_snapshot_script'
Spécifie un pointeur vers l'emplacement d'un fichier .sql. pre_snapshot_script est de type nvarchar(255), avec NULL comme valeur par défaut. L'Agent de fusion exécute le script de pré-instantané avant tous les scripts d'objets répliqués, lors de l'application de l'instantané chez 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 = ] 'post_snapshot_script'
Spécifie un pointeur vers l'emplacement d'un fichier .sql. post_snapshot_script est de type nvarchar(255), avec NULL comme valeur par défaut. 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 de post-instantané ne sont pas exécutés sur les Abonnés SQL Server Compact.[ @compress_snapshot = ] 'compress_snapshot'
Spécifie que l'instantané écrit à l'emplacement @alt_snapshot_folder doit être compressé au format CAB Microsoft. compress_snapshot est de type nvarchar(5), avec FALSE comme valeur par défaut. false indique que les instantanés ne seront pas compressés ; true spécifie que l'instantané ne doit pas être compressé. Les fichiers d'instantané dépassant 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é se trouvant 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 la valeur false.[ @ftp_address = ] 'ftp_address'
Adresse réseau du service FTP du serveur de distribution. ftp_address est de type sysname, avec NULL comme valeur par défaut. 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 valeur pour ftp_address. 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 du serveur de distribution. ftp_port est de type int, avec 21 comme valeur par défaut. 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 valeur pour ftp_port.[ @ftp_subdirectory = ] 'ftp_subdirectory'
Indique l'emplacement à partir duquel l'Agent de fusion de l'abonné peut extraire les fichiers d'instantané si la publication prend en charge la propagation d'instantanés via FTP. ftp_subdirectory est de type nvarchar(255), avec NULL comme valeur par défaut. Étant donné que cette propriété est stockée pour chaque publication, chaque publication peut avoir sa propre valeur pour ftp_subdirctory ou, si une valeur NULL est spécifiée, elle peut n'être associée à aucun sous-répertoire.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 en italique ci-dessus dépendent des détails de la publication et de la partition de l'abonné.
[ @ftp_login = ] 'ftp_login'
Nom d'utilisateur utilisé pour la connexion au service FTP. ftp_login est de type sysname, avec « anonymous » comme valeur par défaut.[ @ftp_password = ] 'ftp_password'
Mot de passe de l'utilisateur utilisé pour la connexion au service FTP. ftp_password est de type sysname, avec NULL comme valeur par défaut.Remarque relative à la sécurité 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 de type int, avec une valeur par défaut de 14 jours, indiquant la période de conservation de la ligne en conflit avant qu'elle ne soit purgée de la table de conflits.[ @keep_partition_changes = ] 'keep_partition_changes'
Spécifie s'il faut activer l'optimisation des modifications apportées aux partition lorsque les partitions précalculées ne peuvent pas être utilisées. keep_partition_changes est de type nvarchar(5), avec TRUE comme valeur par défaut. La valeur false indique que les modifications apportées à la partition ne sont pas optimisées et que lorsqu'on n'utilise pas les partitions précalculées, les partitions envoyées à tous les Abonnés sont vérifiées quand leurs données sont modifiées. La valeur true indique que les modifications apportées aux partitions sont optimisées et que seuls les Abonnés ayant des lignes dans les partitions modifiées sont affectés. Lors de l'utilisation de partitions précalculées, attribuez à use_partition_groups la valeur true et attribuez à keep_partition_changes la valeur false. Pour plus d'informations, consultez Optimiser les performances des filtres paramétrés avec des partitions précalculées.[!REMARQUE]
Si vous spécifiez la valeur true pour keep_partition_changes, spécifiez la valeur 1 pour le paramètre Agent d'instantané -MaxNetworkOptimization. Pour plus d'informations sur ce paramètre, consultez Agent d'instantané de réplication. Pour plus d'informations sur la spécification des paramètres d'agent, consultez Administration de l'Agent de réplication.
Avec les abonnés SQL Server Compact, keep_partition_changes doit avoir la valeur true afin que les suppressions soient correctement propagées. Lorsque la valeur est false, l'abonné peut avoir plus de lignes que prévu.
[ @allow_subscription_copy= ] '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 de type nvarchar(5), avec FALSE comme valeur par défaut. La taille de la base de données d'abonnement doit être inférieure à 2 gigaoctets (Go).[ @allow_synctoalternate = ] 'allow_synctoalternate'
Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.[ @validate_subscriber_info = ] '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 de type nvarchar(500), avec NULL comme valeur par défaut. 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 vous-même ce paramètre mais autoriser SQL Server à déterminer automatiquement le critère de filtrage.
[ @add_to_active_directory = ] 'add_to_active_directory'
Ce paramètre est déconseillé et n'est pris en charge que pour des raisons de compatibilité descendante des scripts. Vous ne pouvez plus ajouter d'informations de publication à Microsoft Active Directory.[ @max_concurrent_merge = ] maximum_concurrent_merge
Nombre maximal de processus de fusion simultanés autorisés. maximum_concurrent_merge est de type int avec 0 comme valeur par défaut. Si cette propriété a la valeur 0, cela indique qu'il peut exister un nombre illimité de processus de fusion simultanés à tout instant. 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é. Si le nombre de processus de fusion planifiés en même temps dépasse le nombre maximal autorisé à l'exécution, les travaux en trop sont placés dans une file d'attente jusqu'à l'achèvement d'un processus de fusion en cours.[ @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. maximum_concurrent_dynamic_snapshots est de type int avec 0 comme valeur par défaut. Si la valeur est 0, le nombre de sessions d'instantané est illimité. Si, au même moment, le nombre de processus d'instantané planifiés dépasse le nombre maximal autorisé, les travaux en excès sont placés dans une file d'attente jusqu'à achèvement d'un processus d'instantané en cours.[ @use_partition_groups = ] '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 de type nvarchar(5) et peut prendre l'une des valeurs suivantes :Valeur
Description
true
La publication utilise les partitions précalculées.
false
La publication n'utilise pas les partitions précalculé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écalculées, use_partition_groups doit avoir la valeur false. Lorsqu'il a la valeur NULL, le système décide si les partitions précalculées peuvent être utilisées. Si les partitions précalculées ne peuvent pas être utilisées, cette valeur devient alors false sans générer d'erreur. Dans ce type de cas, keep_partition_changes peut avoir la valeur true pour fournir une certaine optimisation. Pour plus d'informations, consultez Filtres de lignes paramétrés et Optimiser les performances des filtres paramétrés avec des partitions précalculées.
[ @publication_compatibility_level = ] backward_comp_level
Indique la compatibilité descendante de la publication. backward_comp_level est de type nvarchar(6) et peut prendre l'une des valeurs suivantes :Valeur
Version
90RTM
SQL Server 2005
100RTM
SQL Server 2008
[ @replicate_ddl = ] replicate_ddl
Précise si la réplication de schéma est prise en charge pour la publication. replicate_ddl est de type int, avec 1 comme valeur par défaut. 1 indique que les instructions en langage de définition de données (DDL) exécutées sur le serveur de publication sont répliquées, et 0 qu'elles 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 honoré 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 mis à jour pour empêcher de nouvelles instructions DML d'inclure la colonne supprimée, ce qui provoquerait l'échec de l'agent de distribution. Le paramètre @replicate\_ddl est ignoré car la réplication doit toujours répliquer la modification de schéma.
Lorsqu'une colonne est modifiée, le type de données source ou la possibilité d'une valeur NULL peuvent avoir changé et les instructions DML peuvent contenir une valeur non 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 de schéma.
Lorsqu'une instruction DDL ajoute une nouvelle colonne, sysarticlecolumns n'inclut pas la nouvelle colonne. Les instructions DML n'essayeront pas de répliquer les 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 = ] '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 de type nvarchar(5), avec FALSE comme valeur par défaut. true indique que les Abonnés peuvent initier le processus d'instantané.[ @allow_web_synchronization = ] 'allow_web_synchronization'
Détermine si la publication est activée pour la synchronisation Web. allow_web_synchronization est de type nvarchar(5), avec FALSE comme valeur par défaut. true spécifie que les abonnements à cette publication peuvent être synchronisés via HTTPS. Pour plus d'informations, consultez Synchronisation Web pour la réplication de fusion. Pour prendre en charge les Abonnés SQL Server Compact, vous devez spécifier la valeur true.[ @web_synchronization_url= ] 'web_synchronization_url'
Spécifie la valeur par défaut de l'URL Internet utilisée pour la synchronisation Web. web_synchronization_url i est de type nvarchar(500), avec NULL comme valeur par défaut. Définit l'URL Internet par défaut si aucune URL n'a été explicitement définie lorsque sp_addmergepullsubscription_agent est exécuté.[ @allow_partition_realignment = ] '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 de type nvarchar(5), avec TRUE comme valeur par défaut. true envoie les suppression à l'abonné pour refléter les résultats d'une modification de partition en supprimant des données qui ne font plus partie de sa partition. false laisse les données d'une ancienne partition sur l'abonné : les modifications apportées à ces données sur le serveur de publication ne sont pas répliquées sur l'abonné, mais les modifications apportées sur l'abonné sont répliquées sur le serveur de publication. Le fait d'attribuer à allow_partition_realignment la valeur false permet de conserver dans un abonnement des données issues d'une ancienne partition afin qu'elles soient accessibles à des fins d'historique.[!REMARQUE]
Les données qui demeurent sur l'Abonné lorsque allow_partition_realignment a la valeur false doivent être traitées en tant que données en lecture seule ; toutefois, cette contrainte n'est pas strictement imposée par le système de réplication.
[ @retention_period_unit = ] 'retention_period_unit'
Spécifie les unités pour la période de rétention définie par retention. retention_period_unit est de type nvarchar(10) et peut prendre l'une des valeurs suivantes.Valeur
Version
day (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
Indique 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 de type int, avec 1000 comme valeur par défaut.[ @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 apportée à la publication, où la valeur 1 a été spécifiée pour @force_reinit_subscription. automatic_reinitialization_policy est de type bit avec 0 comme valeur par défaut. La valeur 1 indique que les modifications sont téléchargées à partir de l'Abonné avant une réinitialisation automatique.Important
Si vous ajoutez, supprimez ou modifiez un filtre paramétrable, les modifications en attente chez l'abonné ne peuvent pas être téléchargées vers 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 = ] 'conflict_logging'
Spécifie l'emplacement de stockage des enregistrements de conflits. conflict_logging est de type nvarchar(15) et peut prendre l'une des valeurs suivantes :Valeur
Description
publisher
Les enregistrements de conflits sont stockés sur le serveur de publication.
subscriber
Les enregistrements de conflits sont stockés sur l'abonné qui a causé le conflit. Non pris en charge pour les Abonnés SQL Server Compact.
both
Les enregistrements de conflits sont stockés sur le serveur de publication et sur l'abonné.
NULL (valeur par défaut)
La réplication attribut automatiquement à conflict_logging la valeur both lorsque backward_comp_level a pour valeur 90RTM, et publisher dans tous les autres cas.
Valeurs des codes de retour
0 (succès) ou 1 (échec)
Notes
sp_addmergepublication est utilisée dans la réplication de fusion.
Les objets de publication figurant dans l'annuaire Active Directory ne peuvent être affichés à l'aide du paramètre @add_to_active_directory que si l'objet SQL Server a déjà été créé dans Active Directory.
S'il existe plusieurs publications à proclamer le même objet de base de données, seules les publications pour lesquelles replicate_ddl a la valeur 1 répliqueront les instructions ALTER TABLE, ALTER VIEW, ALTER PROCEDURE, ALTER FUNCTION et ALTER TRIGGER DDL. Cependant, une instruction ALTER TABLE DROP COLUMN DDL sera répliquée par toutes les publications publiant la colonne supprimée.
Pour les Abonnés SQL Server Compact, la valeur de alternate_snapshot_folder est uniquement utilisée lorsque snapshot_in_default_folder a pour valeur false.
Si la réplication DDL est activée (replicate_ddl = 1) pour une publication alors que vous voulez apporter des modifications DDL sans réplication à cette publication, exécutez d'abord sp_changemergepublication (Transact-SQL) pour définir replicate_ddl sur 0. Après exécution des instructions DDL sans réplication, vous pouvez exécuter de nouveau sp_changemergepublication pour réactiver la réplication DDL.
Exemple
-- 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'AdventureWorks2012';
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 [AdventureWorks2012]
EXEC sp_addmergepublication
-- These parameters are optional.
@publication = @publication,
-- optional parameters
@description = N'Merge publication of AdventureWorks2012.',
@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 du rôle de base de données fixe db_owner peuvent exécuter la procédure sp_addmergepublication.
Voir aussi
Référence
sp_changemergepublication (Transact-SQL)
sp_dropmergepublication (Transact-SQL)
sp_helpmergepublication (Transact-SQL)
Procédures stockées de réplication (Transact-SQL)