sp_addmergearticle (Transact-SQL)
S’applique à : SQL Server Azure SQL Managed Instance
Ajoute un article à une publication de fusion existante. 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_addmergearticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
, [ @source_object = ] N'source_object'
[ , [ @type = ] N'type' ]
[ , [ @description = ] N'description' ]
[ , [ @column_tracking = ] N'column_tracking' ]
[ , [ @status = ] N'status' ]
[ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
[ , [ @creation_script = ] N'creation_script' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @subset_filterclause = ] N'subset_filterclause' ]
[ , [ @article_resolver = ] N'article_resolver' ]
[ , [ @resolver_info = ] N'resolver_info' ]
[ , [ @source_owner = ] N'source_owner' ]
[ , [ @destination_owner = ] N'destination_owner' ]
[ , [ @vertical_partition = ] N'vertical_partition' ]
[ , [ @auto_identity_range = ] N'auto_identity_range' ]
[ , [ @pub_identity_range = ] pub_identity_range ]
[ , [ @identity_range = ] identity_range ]
[ , [ @threshold = ] threshold ]
[ , [ @verify_resolver_signature = ] verify_resolver_signature ]
[ , [ @destination_object = ] N'destination_object' ]
[ , [ @allow_interactive_resolver = ] N'allow_interactive_resolver' ]
[ , [ @fast_multicol_updateproc = ] N'fast_multicol_updateproc' ]
[ , [ @check_permissions = ] check_permissions ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @published_in_tran_pub = ] N'published_in_tran_pub' ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection' ]
[ , [ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution' ]
[ , [ @partition_options = ] partition_options ]
[ , [ @processing_order = ] processing_order ]
[ , [ @subscriber_upload_options = ] subscriber_upload_options ]
[ , [ @identityrangemanagementoption = ] N'identityrangemanagementoption' ]
[ , [ @delete_tracking = ] N'delete_tracking' ]
[ , [ @compensate_for_errors = ] N'compensate_for_errors' ]
[ , [ @stream_blob_columns = ] N'stream_blob_columns' ]
[ ; ]
Arguments
[ @publication = ] N’publication'
Nom de la publication qui contient l’article. @publication est sysname, sans valeur par défaut.
[ @article = ] N’article'
Nom de l’article. Le nom doit être unique dans la publication. @article est sysname, sans valeur par défaut. @article doit se trouver sur l’ordinateur local exécutant SQL Server et doit être conforme aux règles pour les identificateurs.
[ @source_object = ] N’source_object'
Objet de base de données à publier. @source_object est sysname, sans valeur par défaut. Pour plus d’informations sur les types d’objets qui peuvent être publiés à l’aide de la réplication de fusion, consultez Publier des données et des objets de base de données.
[ @type = ] N’type'
Type d’article. @type est sysname, avec une valeur par défaut table
, et peut être l’une des valeurs suivantes.
Valeur | Description |
---|---|
table (valeur par défaut) |
Table avec schéma et données. La réplication surveille la table pour déterminer les données à répliquer. |
func schema only |
Fonction avec schéma uniquement. |
indexed view schema only |
Vue indexée avec schéma uniquement. |
proc schema only |
Procédure stockée avec schéma uniquement. |
synonym schema only |
Synonyme avec schéma uniquement. |
view schema only |
Vue avec schéma uniquement. |
[ @description = ] N’description'
Description de l’article. @description est nvarchar(255), avec la valeur par défaut NULL
.
[ @column_tracking = ] N’column_tracking'
Paramètre pour le suivi au niveau des colonnes. @column_tracking est nvarchar(10), avec la valeur par défaut false
. false
active le suivi des colonnes. false
désactive le suivi des colonnes et laisse la détection des conflits au niveau de la ligne. Si la table est déjà publiée dans d'autres publications de fusion, vous devez utiliser la même valeur de suivi de colonne que celle des articles existants basés sur cette table. Ce paramètre concerne uniquement les articles de table.
Remarque
Si le suivi de lignes est utilisé pour la détection de conflits (valeur par défaut), la table de base peut inclure 1 024 colonnes au maximum, mais les colonnes doivent être filtrées à partir de l'article afin que 246 colonnes au maximum soient publiées. Si le suivi de colonnes est utilisé, la table de base peut inclure 246 colonnes au maximum.
[ @status = ] N’status'
État de l’article. @status est nvarchar(10), avec la valeur par défaut unsynced
. Si active
, le script de traitement initial pour publier la table est exécuté. Si unsynced
, le script de traitement initial pour publier la table est exécuté à la prochaine exécution de l’Agent d’instantané.
[ @pre_creation_cmd = ] N’pre_creation_cmd'
Spécifie ce que le système doit faire si la table existe sur l'abonné lors de l'application de l'instantané. @pre_creation_cmd est nvarchar(10) et peut être l’une des valeurs suivantes.
Valeur | Description |
---|---|
none |
Si la table existe déjà côté abonné, aucune action n'est effectuée. |
delete |
Entraîne une suppression basée sur la clause WHERE dans le filtre de sous-ensemble. |
drop (valeur par défaut) |
Supprime la table avant de la recréer. Requis pour prendre en charge les abonnés SQL Server Compact. |
truncate |
Tronque la table de destination. |
[ @creation_script = ] N’creation_script'
Chemin d’accès et nom d’un script de schéma d’article facultatif utilisé pour créer l’article dans la base de données d’abonnement. @creation_script est nvarchar(255), avec la valeur par défaut NULL
.
Remarque
Les scripts de création ne sont pas exécutés sur les abonnés SQL Server Compact.
[ @schema_option = ] schema_option
Bitmap de l’option de génération de schéma pour l’article donné. @schema_option est varbinary(8) et peut être le | (OR au niveau du bit) produit d’une ou plusieurs de ces valeurs.
Valeur | Description |
---|---|
0x00 |
Désactive le script par l’Agent d’instantané et utilise le script de précréation de schéma fourni défini dans @creation_script. |
0x01 |
Génère la création d’objets (CREATE TABLE , CREATE PROCEDURE etc.). Cette valeur est la valeur par défaut pour les articles de procédure stockée. |
0x10 |
Génère un index cluster correspondant. Même si cette option n’est pas définie, les index liés aux clés primaires et UNIQUE aux contraintes sont générés s’ils sont déjà définis sur une table publiée. |
0x20 |
Convertit les types de données définis par l'utilisateur (UDT) en types de données de base auprès de l'Abonné. Cette option ne peut pas être utilisée lorsqu’il existe une contrainte CHECK ou DEFAULT sur une colonne UDT, si une colonne UDT fait partie de la clé primaire ou si une colonne calculée fait référence à une colonne UDT. |
0x40 |
Génère les index non-cluster correspondants. Même si cette option n’est pas définie, les index liés aux clés primaires et UNIQUE aux contraintes sont générés s’ils sont déjà définis sur une table publiée. |
0x80 |
Réplique les contraintes PRIMARY KEY . Tous les index liés à la contrainte sont également répliqués, même si les options 0x10 et 0x40 ne sont pas activées. |
0x100 |
Réplique les déclencheurs utilisateur, si ceux-ci sont définis, sur un article de table. |
0x200 |
Réplique les contraintes FOREIGN KEY . Si la table référencée ne fait pas partie d’une publication, toutes les FOREIGN KEY contraintes sur une table publiée ne sont pas répliquées. |
0x400 |
Réplique les contraintes CHECK . |
0x800 |
Réplique les valeurs par défaut. |
0x1000 |
Réplique le classement au niveau des colonnes. |
0x2000 |
Réplique les propriétés étendues associées à l'objet source de l'article publié. |
0x4000 |
Réplique les contraintes UNIQUE . Tous les index liés à la contrainte sont également répliqués, même si les options 0x10 et 0x40 ne sont pas activées. |
0x8000 |
Cette option n’est pas valide pour les serveurs de publication exécutant SQL Server 2005 (9.x) et les versions ultérieures. |
0x10000 |
Réplique les contraintes CHECK de NOT FOR REPLICATION sorte que les contraintes ne soient pas appliquées pendant la synchronisation. |
0x20000 |
Réplique les contraintes FOREIGN KEY de NOT FOR REPLICATION sorte que les contraintes ne soient pas appliquées pendant la synchronisation. |
0x40000 |
Réplique les groupes de fichiers associés à une table ou un index partitionné. |
0x80000 |
Réplique le schéma de partition d'une table partitionnée. |
0x100000 |
Réplique le schéma de partition d'un index partitionné. |
0x200000 |
Réplique les statistiques d'une table. |
0x400000 |
Réplique des liaisons par défaut. |
0x800000 |
Réplique les liaisons de règle. |
0x1000000 |
Réplique l’index de recherche en texte intégral. |
0x2000000 |
Les collections de schémas XML liées aux colonnes XML ne sont pas répliquées. |
0x4000000 |
Réplique les index sur les colonnes xml . |
0x8000000 |
Crée n'importe quel schéma qui n'est pas déjà présent sur l'abonné. |
0x10000000 |
Convertit les colonnes xml en ntext sur l’Abonné. |
0x20000000 |
Convertit les types de données d’objet volumineux (nvarchar(max), varchar(max)et varbinary(max)) introduits dans SQL Server 2005 (9.x) en types de données pris en charge sur SQL Server 2000 (8.x). |
0x40000000 |
Réplique des autorisations. |
0x80000000 |
Tente de supprimer des dépendances vers des objets qui ne font pas partie de la composition. |
0x100000000 |
Utilisez cette option pour répliquer l’attribut FILESTREAM s’il est spécifié sur les colonnes varbinary(max). Ne spécifiez pas cette option si vous répliquez des tables vers des abonnés SQL Server 2005 (9.x). La réplication de tables qui ont des colonnes FILESTREAM vers des abonnés SQL Server 2000 (8.x) n’est pas prise en charge, quelle que soit la façon dont cette option de schéma est définie. Voir l’option 0x800000000 associée . |
0x200000000 |
Convertit les types de données de date et d’heure (date, heure, datetimeoffset et datetime2) introduits dans SQL Server 2008 (10.0.x) en types de données pris en charge sur les versions antérieures de SQL Server. |
0x400000000 |
Réplique l'option de compression pour les données et les index. Pour plus d’informations, consultez Compression de données. |
0x800000000 |
Définissez cette option pour stocker les données FILESTREAM dans leur propre groupe de fichiers sur l'Abonné. Si cette option n’est pas définie, les données FILESTREAM sont stockées sur le groupe de fichiers par défaut. La réplication ne crée pas de groupes de fichiers ; par conséquent, si vous définissez cette option, vous devez créer le groupe de fichiers avant d’appliquer l’instantané sur l’Abonné. Pour plus d’informations sur la création d’objets avant d’appliquer l’instantané, consultez Exécuter des scripts avant et après l’application de l’instantané. Voir l’option 0x100000000 associée . |
0x1000000000 |
Convertit les types clR (Common Language Runtime) définis par l’utilisateur (UDT) en varbinary(max) afin que les colonnes de type UDT puissent être répliquées vers des Abonnés exécutant SQL Server 2005 (9.x). |
0x2000000000 |
Convertit le type de données hierarchyid en varbinary(max) afin que les colonnes de type hierarchyid puissent être répliquées vers des Abonnés exécutant SQL Server 2005 (9.x). Pour plus d’informations sur l’utilisation de colonnes hierarchyid dans des tables répliquées, consultez la référence de méthode de type de données hierarchyid. |
0x4000000000 |
Réplique tous les index filtrés sur la table. Pour plus d’informations sur les index filtrés, consultez Créer des index filtrés. |
0x8000000000 |
Convertit les types de données geography et geometry en varbinary(max) afin que les colonnes de ces types puissent être répliquées vers des Abonnés exécutant SQL Server 2005 (9.x). |
0x10000000000 |
Réplique les index sur les colonnes de type geography et geometry. |
Si cette valeur est NULL
, le système génère automatiquement une option de schéma valide pour l’article. La table d’options de schéma par défaut affiche la valeur choisie en fonction du type d’article. En outre, toutes les valeurs @schema_option ne sont pas valides pour chaque type de réplication et de type d’article. Le tableau d’options de schéma valide affiche les options qui peuvent être spécifiées pour un type d’article donné.
Remarque
Le paramètre @schema_option affecte uniquement les options de réplication pour l’instantané initial. Une fois le schéma initial généré par l’Agent d’instantané et appliqué à l’Abonné, la réplication des modifications de schéma de publication apportées à l’Abonné se produit en fonction des règles de réplication des modifications de schéma et du paramètre de @replicate_ddl spécifié dans sp_addmergepublication. Pour plus d’informations, consultez Modifier le schéma dans les bases de données de publication.
[ @subset_filterclause = ] N’subset_filterclause'
Clause WHERE spécifiant le filtrage horizontal d’un article de tableau sans le mot WHERE inclus. @subset_filterclause est nvarchar(1000), avec une valeur par défaut d’une chaîne vide.
Important
Pour des raisons de performances, nous vous recommandons de ne pas appliquer de fonctions aux noms de colonnes dans les clauses de filtre de lignes paramétrables, telles que LEFT([MyColumn]) = SUSER_SNAME()
. Si vous utilisez HOST_NAME dans une clause de filtre et remplacez la HOST_NAME
valeur, vous devrez peut-être convertir des types de données à l’aide de CONVERT. Pour plus d’informations sur les meilleures pratiques pour ce cas, consultez la section « Substitution de la valeur HOST_NAME() » dans les filtres paramétrables - Filtres de lignes paramétrables.
[ @article_resolver = ] N’article_resolver'
Programme de résolution COM utilisé pour résoudre les conflits sur l’article de table ou l’assembly .NET Framework appelé pour exécuter une logique métier personnalisée sur l’article de table. @article_resolver est nvarchar(255), avec la valeur par défaut NULL
. Les valeurs disponibles pour ce paramètre sont répertoriées dans microsoft Custom Resolvers. Si la valeur fournie n’est pas l’un des résolveurs Microsoft, SQL Server utilise le programme de résolution spécifié au lieu du programme de résolution fourni par le système. Permet sp_enumcustomresolvers
d’énumérer la liste des résolveurs personnalisés disponibles. Pour plus d’informations, consultez Exécuter la logique métier pendant la synchronisation de fusion et la réplication avancée de fusion - Détection et résolution des conflits.
[ @resolver_info = ] N’resolver_info'
Permet de spécifier des informations supplémentaires requises par un programme de résolution personnalisé. Certains résolveurs Microsoft nécessitent une colonne fournie en tant qu’entrée au programme de résolution. @resolver_info est nvarchar(517), avec la valeur par défaut NULL
. Pour plus d’informations, consultez Conflit de réplication de fusion avancée - Programme de résolution COM.
[ @source_owner = ] N’source_owner'
Nom du propriétaire de l '@source_object. @source_owner est sysname, avec la valeur par défaut NULL
. Si NULL
, l’utilisateur actuel est supposé être le propriétaire.
[ @destination_owner = ] N’destination_owner'
Propriétaire de l’objet dans la base de données d’abonnement, si ce n’est pas le cas dbo
. @destination_owner est sysname, avec la valeur par défaut NULL
. Si NULL
, dbo
est supposé être le propriétaire.
[ @vertical_partition = ] N’vertical_partition'
Active ou désactive le filtrage de colonne sur un article de table. @vertical_partition est nvarchar(5), avec la valeur par défaut false
.
false
indique qu’il n’existe aucun filtrage vertical et publie toutes les colonnes.false
efface toutes les colonnes à l’exception de la clé primaire etROWGUID
des colonnes déclarées. Les colonnes sont ajoutées à l’aide desp_mergearticlecolumn
.
[ @auto_identity_range = ] N’auto_identity_range'
Active et désactive la gestion automatique des plages d’identités pour cet article de table sur une publication au moment de sa création. @auto_identity_range est nvarchar(5), avec la valeur par défaut NULL
. false
active la gestion automatique des plages d’identités, tout en la désactivant false
.
Remarque
Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts. Vous devez utiliser @identityrangemanagementoption pour spécifier des options de gestion des plages d’identité. Pour plus d’informations, consultez Répliquer des colonnes d’identité.
[ @pub_identity_range = ] pub_identity_range
Contrôle la taille de la plage d'identité allouée à un abonné disposant d'un abonnement serveur lorsque la gestion automatique des plages d'identité est utilisée. Cette plage d'identité est réservée à un Abonné de republication qui peut l'allouer à ses propres Abonnés. @pub_identity_range est bigint, avec une valeur par défaut de NULL
. Vous devez spécifier ce paramètre si @identityrangemanagementoption est auto
ou si @auto_identity_range est false
.
[ @identity_range = ] identity_range
Contrôle la taille de la plage d'identité allouée au serveur de publication et à l'Abonné lorsque la gestion automatique des plages d'identité est utilisée. @identity_range est bigint, avec une valeur par défaut de NULL
. Vous devez spécifier ce paramètre si @identityrangemanagementoption est auto
ou si @auto_identity_range est false
.
Remarque
@identity_range contrôle la taille de la plage d’identité lors de la republiation des Abonnés à l’aide des versions précédentes de SQL Server.
[ @threshold = ] seuil
Valeur de pourcentage qui contrôle le moment où l'Agent de fusion affecte une nouvelle plage d'identité. Lorsque le pourcentage de valeurs spécifiées dans @threshold est utilisé, l’Agent de fusion crée une plage d’identités. @threshold est int, avec la valeur par défaut NULL
. Vous devez spécifier ce paramètre si @identityrangemanagementoption est auto
ou si @auto_identity_range est false
.
[ @verify_resolver_signature = ] verify_resolver_signature
Spécifie si une signature numérique est vérifiée avant d'utiliser un résolveur dans une réplication de fusion. @verify_resolver_signature est int, avec la valeur par défaut 1
.
0
spécifie que la signature n’est pas vérifiée.1
spécifie que la signature est vérifiée pour voir si elle provient d’une source approuvée.
[ @destination_object = ] N’destination_object'
Nom de l’objet dans la base de données d’abonnement. @destination_object est sysname, avec une valeur par défaut de ce qui se trouve dans @source_object. Ce paramètre ne peut être spécifié que si l'article est un article de schéma exclusivement, tel que le sont les procédures stockées, vues et fonctions définies par l'utilisateur. Si l’article spécifié est un article de table, la valeur dans @source_object remplace la valeur dans @destination_object.
[ @allow_interactive_resolver = ] N’allow_interactive_resolver'
Active ou désactive l'utilisation du résolveur interactif sur un article. @allow_interactive_resolver est nvarchar(5), avec la valeur par défaut false
. false
active l’utilisation du programme de résolution interactif sur l’article ; false
le désactive.
Remarque
Le programme de résolution interactif n’est pas pris en charge par les abonnés SQL Server Compact.
[ @fast_multicol_updateproc = ] N’fast_multicol_updateproc'
Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts.
[ @check_permissions = ] check_permissions
Bitmap des autorisations au niveau de la table qui sont vérifiées lorsque l’Agent de fusion applique des modifications au serveur de publication. Si le compte de connexion/d’utilisateur du serveur de publication utilisé par le processus de fusion ne dispose pas des autorisations de table appropriées, les modifications non valides sont enregistrées en tant que conflits. @check_permissions est int, et peut être le | (OR au niveau du bit) produit d’une ou plusieurs des valeurs suivantes.
Valeur | Description |
---|---|
0x00 (valeur par défaut) |
Les autorisations ne sont pas vérifiées. |
0x10 |
Les autorisations sont vérifiées sur le serveur de publication avant que les opérations d'insertion exécutées sur l'Abonné puissent être téléchargées. |
0x20 |
Les autorisations sont vérifiées sur le serveur de publication avant que les opérations de mise à jour exécutées sur l'Abonné puissent être téléchargées. |
0x40 |
Les autorisations sont vérifiées sur le serveur de publication avant que les opérations de suppression exécutées sur l'Abonné puissent être téléchargées. |
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Reconnaît que l’action effectuée par cette procédure stockée peut invalider un instantané existant. @force_invalidate_snapshot est bit, avec la valeur par défaut 0
.
0
spécifie que l’ajout d’un article n’entraîne pas l’échec de l’instantané. 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 l’ajout d’un article peut entraîner l’échec de l’instantané et, s’il existe des abonnements existants qui nécessitent un nouvel instantané, donne l’autorisation de marquer l’instantané existant comme obsolète et un nouvel instantané généré. @force_invalidate_snapshot est défini1
lors de l’ajout d’un article à une publication avec un instantané existant.
[ @published_in_tran_pub = ] N’published_in_tran_pub'
Indique qu'un article d'une publication de fusion est également publié dans une publication transactionnelle. @published_in_tran_pub est nvarchar(5), avec la valeur par défaut false
. false
spécifie que l’article est également publié dans une publication transactionnelle.
[ @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 bit, avec la valeur par défaut 0
.
0
spécifie que l’ajout d’un article n’entraîne 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 apportée.1
signifie que les modifications apportées à l’article de fusion entraînent la réinitialisation des abonnements existants et autorisent la réinitialisation de l’abonnement. @force_reinit_subscription est défini1
lorsque @subset_filterclause spécifie un filtre de lignes paramétrable.
[ @logical_record_level_conflict_detection = ] N’logical_record_level_conflict_detection'
Spécifie le niveau de détection de conflit pour un article qui est membre d'un enregistrement logique. @logical_record_level_conflict_detection est nvarchar(5), avec la valeur par défaut false
.
false
spécifie qu’un conflit est détecté si des modifications sont apportées n’importe où dans l’enregistrement logique.false
spécifie que la détection de conflit par défaut est utilisée comme spécifié par @column_tracking. Pour plus d’informations, consultez Regrouper les modifications apportées à des lignes connexes à l’aide d’enregistrements logiques.
Remarque
Étant donné que les enregistrements logiques ne sont pas pris en charge par les abonnés SQL Server Compact, vous devez spécifier la valeur de false
@logical_record_level_conflict_detection pour prendre en charge ces abonnés.
[ @logical_record_level_conflict_resolution = ] N’logical_record_level_conflict_resolution'
Spécifie le niveau de résolution de conflit pour un article qui est membre d'un enregistrement logique. @logical_record_level_conflict_resolution est nvarchar(5), avec la valeur par défaut false
.
false
spécifie que l’enregistrement logique gagnant entier remplace l’enregistrement logique perdant.false
spécifie que les lignes gagnantes ne sont pas limitées à l’enregistrement logique.
Si @logical_record_level_conflict_detection est false
, @logical_record_level_conflict_resolution doit également être défini sur false
. Pour plus d’informations, consultez Regrouper les modifications apportées à des lignes connexes à l’aide d’enregistrements logiques.
Remarque
Étant donné que les enregistrements logiques ne sont pas pris en charge par les abonnés SQL Server Compact, vous devez spécifier la valeur de false
@logical_record_level_conflict_resolution pour prendre en charge ces abonnés.
[ @partition_options = ] partition_options
Définit le mode de partitionnement des données de l'article, ce qui permet l'optimisation des performances lorsque toutes les lignes appartiennent à une seule partition ou à un seul abonnement. @partition_options est tinyint et peut être l’une des valeurs suivantes.
Valeur | Description |
---|---|
0 (valeur par défaut) |
Le filtrage de l’article est statique ou ne génère pas de sous-ensemble unique de données pour chaque partition, c’est-à-dire une partition « qui se chevauche ». |
1 |
Les partitions se chevauchent et les mises à jour du langage de manipulation des données (DML) effectuées sur l’Abonné ne peuvent pas modifier la partition à laquelle appartient une ligne. |
2 |
Le filtrage de l'article produit des partitions qui ne se chevauchent pas, mais plusieurs abonnés peuvent recevoir la même partition. |
3 |
Le filtrage de l'article produit des partitions qui ne se chevauchent pas et qui sont uniques pour chaque abonnement. |
Remarque
Si la table source d’un article est déjà publiée dans une autre publication, la valeur de @partition_options doit être la même pour les deux articles.
[ @processing_order = ] processing_order
Indique l'ordre de traitement des articles dans une publication de fusion. @processing_order est int, avec la valeur par défaut 0
. 0
spécifie que l’article n’est pas ordonné, et toute autre valeur représente la valeur ordinale de l’ordre de traitement de cet article. Les articles sont traités à partir de la valeur la plus faible vers la valeur la plus élevée. Si deux articles ont la même valeur, le traitement de la commande est déterminé par l’ordre du surnom de l’article dans la table système sysmergearticles . Pour plus d’informations, consultez Spécifier les propriétés de la réplication de fusion.
[ @subscriber_upload_options = ] subscriber_upload_options
Définit les restrictions imposées aux mises à jour effectuées sur un abonné disposant d'un abonnement client. Pour plus d’informations, consultez Optimiser les performances de la réplication de fusion avec les articles en téléchargement seul. @subscriber_upload_options est tinyint et peut être l’une des valeurs suivantes.
Valeur | Description |
---|---|
0 (valeur par défaut) |
Aucune restriction. Les modifications sur l'abonné sont téléchargées par le serveur de publication. |
1 |
Les modifications sont autorisées sur l’Abonné, mais elles ne sont pas chargées sur le serveur de publication. |
2 |
Les modifications ne sont pas autorisées sur l’Abonné. |
La modification de @subscriber_upload_options nécessite la réinitialisation de l’abonnement en appelant sp_reinitmergepullsubscription.
Remarque
Si la table source d'un article est déjà publiée dans une autre publication, la valeur de @subscriber_upload_options doit être la même pour les deux articles.
[ @identityrangemanagementoption = ] N’identityrangemanagementoption'
Spécifie la façon dont la gestion des plages d'identité est gérée pour l'article. @identityrangemanagementoption est nvarchar(10) et peut être l’une des valeurs suivantes.
Valeur | Description |
---|---|
none |
Désactive la gestion des plages d’identités. |
manual |
Marque la colonne d'identité en utilisant NOT FOR REPLICATION pour activer la gestion manuelle des plages d'identité. |
auto |
Spécifie la gestion automatique des plages d'identité. |
NULL (valeur par défaut) |
none Par défaut, lorsque la valeur de @auto_identity_range n’est pas true . |
Pour la compatibilité descendante, lorsque la valeur de @identityrangemanagementoption est NULL
, la valeur de @auto_identity_range est vérifiée. Toutefois, lorsque la valeur de @identityrangemanagementoption n’est pas NULL
, la valeur de @auto_identity_range est ignorée. Pour plus d’informations, consultez Répliquer des colonnes d’identité.
[ @delete_tracking = ] N’delete_tracking'
Indique si les suppressions sont répliquées. @delete_tracking est nvarchar(5), avec la valeur par défaut true
. false
indique que les suppressions ne sont pas répliquées et true
indique que les suppressions sont répliquées, ce qui est le comportement habituel de la réplication de fusion. Lorsque @delete_tracking est défini false
sur , les lignes supprimées sur l’Abonné doivent être supprimées manuellement sur le serveur de publication et les lignes supprimées sur le serveur de publication doivent être supprimées manuellement sur l’Abonné.
Important
Définition de @delete_tracking pour false
entraîner une non-convergence. Si la table source d’un article est déjà publiée dans une autre publication, la valeur de @delete_tracking doit être la même pour les deux articles.
Remarque
@delete_tracking options ne peuvent pas être définies à l’aide de l’Assistant Nouvelle publication ou de la boîte de dialogue Propriétés de la publication.
[ @compensate_for_errors = ] N’compensate_for_errors'
Indique si des actions de compensation interviennent lorsque des erreurs se produisent pendant la synchronisation. @compensate_for_errors est nvarchar(5), avec la valeur par défaut false
. Lorsqu’elle est définie true
sur , les modifications qui ne peuvent pas être appliquées sur un Abonné ou un serveur de publication pendant la synchronisation entraînent toujours des actions de compensation pour annuler la modification . Toutefois, un Abonné mal configuré qui génère une erreur peut entraîner l’annulation des modifications sur d’autres Abonnés et serveurs de publication. false
désactive ces actions de compensation, toutefois, les erreurs sont toujours enregistrées comme avec compensation et les fusions suivantes continuent d’essayer d’appliquer les modifications jusqu’à ce qu’elles réussissent.
Important
Bien que les données des lignes affectées puissent sembler être hors de convergence, dès que vous résolvez une erreur, des modifications peuvent être appliquées et les données convergent. Si la table source d’un article est déjà publiée dans une autre publication, la valeur de @compensate_for_errors doit être la même pour les deux articles.
[ @stream_blob_columns = ] N’stream_blob_columns'
Spécifie qu'une optimisation de flux de données est utilisée lors de la réplication de colonnes d'objets binaires volumineux. @stream_blob_columns est nvarchar(5), avec la valeur par défaut false
. true
signifie que l’optimisation sera tentée. @stream_blob_columns a la valeur true lorsque FILESTREAM est activé. Cela permet la réplication des données FILESTREAM dans le but d'optimiser et de réduire l'utilisation de la mémoire. Pour forcer les articles de table FILESTREAM à ne pas utiliser le streaming d’objets blob, utilisez cette option sp_changemergearticle
pour définir @stream_blob_columns sur false.
Important
L’activation de cette optimisation de la mémoire peut réduire les performances des Agent de fusion pendant la synchronisation. Cette option ne doit être utilisée que lors de la réplication de colonnes contenant des mégaoctets de données.
Remarque
Certaines fonctionnalités de réplication de fusion, telles que les enregistrements logiques, peuvent toujours empêcher l’optimisation du flux d’être utilisée lors de la réplication d’objets volumineux binaires même avec @stream_blob_columns défini sur true
.
Valeurs des codes de retour
0
(réussite) or 1
(échec).
Notes
sp_addmergearticle
est utilisé dans la réplication de fusion.
Lorsque vous publiez des objets, leurs définitions sont copiées sur les abonnés. Si vous publiez un objet de base de données qui dépend d’un ou de plusieurs autres objets, vous devez publier tous les objets référencés. Par exemple, si vous publiez une vue qui dépend d'une table, vous devez publier la table également.
Si vous spécifiez une valeur de 3
@partition_options :
Il ne peut y avoir qu’un seul abonnement pour chaque partition de données de cet article. Si un deuxième abonnement est créé dans lequel le critère de filtrage du nouvel abonnement produit la même partition que l'abonnement existant, ce dernier est supprimé.
Les métadonnées sont nettoyées chaque fois que le Agent de fusion s’exécute et que l’instantané partitionné expire plus rapidement. Lorsque vous utilisez cette option, pensez à activer l'instantané partitionné requis par l'abonné. Pour plus d'informations, voir Créer un instantané d’une publication de fusion avec des filtres paramétrés.
Si vous ajoutez un article avec un filtre horizontal statique, à l’aide de @subset_filterclause, à une composition existante avec des articles qui ont des filtres paramétrés, les abonnements doivent être réinitialisés.
Lorsque vous spécifiez @processing_order, nous vous recommandons de laisser des écarts entre les valeurs de l’ordre des articles, ce qui facilite la définition de nouvelles valeurs à l’avenir. Par exemple, si vous avez trois articles, Article1
, Article2
et Article3
, définissez @processing_order sur 10
, 20
et , et 30
, plutôt que 1
, 2
et 3
. Pour plus d’informations, consultez Spécifier les propriétés de la réplication de fusion.
Table d’options de schéma par défaut
Ce tableau décrit la valeur par défaut définie par la procédure stockée, si une NULL
valeur est spécifiée pour @schema_option, qui dépend du type d’article.
Type de l'article | Valeur de l'option de schéma |
---|---|
func schema only |
0x01 |
indexed view schema only |
0x01 |
proc schema only |
0x01 |
table |
0x0C034FD1 - SQL Server 2005 (9.x) et versions ultérieures compatibles avec un instantané en mode natif.0x08034FF1 - SQL Server 2005 (9.x) et publications compatibles ultérieures avec un instantané en mode caractère. |
view schema only |
0x01 |
Remarque
Si la publication prend en charge les versions antérieures de SQL Server, l’option de schéma par défaut est table
0x30034FF1
.
Table d’options de schéma valide
Le tableau suivant décrit les valeurs autorisées @schema_option en fonction du type d’article.
Type de l'article | Valeurs de l'option de schéma |
---|---|
func schema only |
0x01 et 0x2000 |
indexed view schema only |
0x01 , 0x040 , 0x0100 , 0x2000 , 0x40000 , 0x1000000 et 0x200000 |
proc schema only |
0x01 et 0x2000 |
table |
Toutes les options. |
view schema only |
0x01 , 0x040 , 0x0100 , 0x2000 , 0x40000 , 0x1000000 et 0x200000 |
Exemples
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesOrderHeader';
SET @table3 = N'SalesOrderDetail';
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';
-- Add a filtered article for the Employee table.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_object = @table1,
@type = N'table',
@source_owner = @hrschema,
@schema_option = 0x0004CF1,
@description = N'article for the Employee table',
@subset_filterclause = @filterclause;
-- Add an article for the SalesOrderHeader table that is filtered
-- based on Employee and horizontally filtered.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_object = @table2,
@type = N'table',
@source_owner = @salesschema,
@vertical_partition = N'true',
@schema_option = 0x0034EF1,
@description = N'article for the SalesOrderDetail table';
-- Add an article for the SalesOrderDetail table that is filtered
-- based on SaledOrderHeader.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table3,
@source_object = @table3,
@source_owner = @salesschema,
@description = 'article for the SalesOrderHeader table',
@identityrangemanagementoption = N'auto',
@pub_identity_range = 100000,
@identity_range = 100,
@threshold = 80,
@schema_option = 0x0004EF1;
-- Add all columns to the SalesOrderHeader article.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Remove the credit card Approval Code column.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@column = N'CreditCardApprovalCode',
@operation = N'drop',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between Employee and SalesOrderHeader.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table2,
@filtername = N'SalesOrderHeader_Employee',
@join_articlename = @table1,
@join_filterclause = N'Employee.BusinessEntityID = SalesOrderHeader.SalesPersonID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table3,
@filtername = N'SalesOrderDetail_SalesOrderHeader',
@join_articlename = @table2,
@join_filterclause = N'SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
autorisations
Nécessite l’appartenance au rôle de serveur fixe sysadmin ou au rôle de base de données fixe db_owner .