sp_addmergearticle (Transact-SQL)
Ajoute un article à une publication de fusion existante. Cette procédure stockée est exécutée sur la base de données de publication du serveur de publication.
Syntaxe
sp_addmergearticle [ @publication = ] 'publication'
, [ @article = ] 'article'
, [ @source_object = ] 'source_object'
[ , [ @type = ] 'type' ]
[ , [ @description = ] 'description' ]
[ , [ @column_tracking = ] 'column_tracking' ]
[ , [ @status = ] 'status' ]
[ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ]
[ , [ @creation_script = ] 'creation_script' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @subset_filterclause = ] 'subset_filterclause' ]
[ , [ @article_resolver = ] 'article_resolver' ]
[ , [ @resolver_info = ] 'resolver_info' ]
[ , [ @source_owner = ] 'source_owner' ]
[ , [ @destination_owner = ] 'destination_owner' ]
[ , [ @vertical_partition = ] 'vertical_partition' ]
[ , [ @auto_identity_range = ] 'auto_identity_range' ]
[ , [ @pub_identity_range = ] pub_identity_range ]
[ , [ @identity_range = ] identity_range ]
[ , [ @threshold = ] threshold ]
[ , [ @verify_resolver_signature = ] verify_resolver_signature ]
[ , [ @destination_object = ] 'destination_object' ]
[ , [ @allow_interactive_resolver = ] 'allow_interactive_resolver' ]
[ , [ @fast_multicol_updateproc = ] 'fast_multicol_updateproc' ]
[ , [ @check_permissions = ] check_permissions ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @published_in_tran_pub = ] 'published_in_tran_pub' ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @logical_record_level_conflict_detection = ] 'logical_record_level_conflict_detection' ]
[ , [ @logical_record_level_conflict_resolution = ] 'logical_record_level_conflict_resolution' ]
[ , [ @partition_options = ] partition_options ]
[ , [ @processing_order = ] processing_order ]
[ , [ @subscriber_upload_options = ] subscriber_upload_options ]
[ , [ @identityrangemanagementoption = ] 'identityrangemanagementoption' ]
[ , [ @delete_tracking = ] delete_tracking ]
[ , [ @compensate_for_errors = ] 'compensate_for_errors' ]
[ , [ @stream_blob_columns = ] 'stream_blob_columns' ]
Arguments
[ @publication= ] 'publication'
Nom de la publication qui contient l'article. L'argument publication est de type sysname et n'a pas de valeur par défaut.[ @article= ] 'article'
Nom de l'article. Le nom doit être unique au sein de la publication. L'argument article est du type sysname, sans valeur par défaut. article doit se trouver sur l'ordinateur local exécutant Microsoft SQL Server et respecter les règles applicables aux identificateurs.[ @source_object= ] 'source_object'
Objet de base de données à publier. L'argument source_object est du type sysname, sans valeur par défaut. Pour plus d'informations sur les types d'objets susceptibles d'être publiés en utilisant la réplication de fusion, consultez Publication de données et d'objets de base de données.[ @type= ] 'type'
Type de l'article. L'argument type est du type sysname, a pour valeur par défaut table et peut prendre 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 viewschema 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= ] 'description'
Description de l'article. description est de type nvarchar(255), avec une valeur par défaut NULL.[ @column_tracking= ] 'column_tracking'
Paramètre de suivi au niveau colonne. L'argument column_tracking est de type nvarchar(10), avec la valeur FALSE par défaut. La valeur trueactive le suivi de colonne. La valeur false le désactive et laisse la détection de conflit au niveau 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.Notes
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 niveau colonne est utilisé, la table de base peut inclure 246 colonnes au maximum. Pour plus d'informations sur le niveau de suivi, consultez la section « Niveau de suivi » de Comment la réplication de fusion détecte et résout les conflits.
[ @status= ] 'status'
État de l'article. status est de type nvarchar(10), avec la valeur par défaut unsynced. S'il possède la valeur active, le script de traitement initial qui permet de publier la table est exécuté. S'il possède la valeur unsynced, le script de traitement initial servant à publier la table sera exécuté lors de la prochaine exécution de l'Agent d'instantané.[ @pre_creation_cmd= ] 'pre_creation_cmd'
Définit l'action entreprise par le système si la table existe sur l'abonné lors de l'application de l'instantané. pre_creation_cmd est du type nvarchar(10) et peut prendre 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. Nécessaire pour la prise en charge des Abonnés Microsoft SQL Server Compact 3.5 SP2.
truncate
Tronque la table de destination.
[ @creation_script= ] '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 de type nvarchar(255), avec NULL comme valeur par défaut.Notes
Les scripts de création ne sont pas exécutés sur les Abonnés SQL Server Compact 3.5 SP2.
[ @schema_option= ] schema_option
Bitmap de l'option de génération de schéma pour l'article donné. schema_option est du type binary(8), et peut être le produit | (OR au niveau du bit) d'une ou plusieurs de ces valeurs.Valeur
Description
0x00
Désactive la génération de scripts par l'Agent d'instantané et utilise le script de précréation de schéma défini dans l'argument 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 activée, les index relatifs aux clés primaires et aux contraintes UNIQUE 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é. Vous ne pouvez pas utiliser cette option lorsqu'il existe une contrainte CHECK ou DEFAULT sur une colonne de type défini par l'utilisateur (UDT), si une colonne UDT fait partie de la clé primaire, ou si une colonne calculée désigne une colonne UDT.
0x40
Génère les index non-cluster correspondants. Même si cette option n'est pas activée, les index relatifs aux clés primaires et aux contraintes UNIQUE 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 relatifs à 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, aucune contrainte FOREIGN KEY appliquée à une table publiée n'est répliquée.
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 relatifs à 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 qui exécutent SQL Server 2005 ou des versions ultérieures.
0x10000
Réplique les contraintes CHECK en tant que NOT FOR REPLICATION afin que les contraintes ne soient pas appliquées durant la synchronisation.
0x20000
Réplique les contraintes FOREIGN KEY en tant que NOT FOR REPLICATION afin que les contraintes ne soient pas appliquées durant 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 des liaisons de règle.
0x1000000
Réplique l'index de texte intégral.
0x2000000
Les collections de schéma 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 LOB (Large Object) (nvarchar(max), varchar(max) et varbinary(max)) introduits dans SQL Server 2005 en types de données pris en charge dans SQL Server 2000. Pour plus d'informations sur la façon dont ces types sont mappés, consultez la section « Mappage des nouveaux types de données pour les versions antérieures » dans Utilisation de plusieurs versions de SQL Server dans une topologie de réplication.
0x40000000
Réplique des autorisations.
0x80000000
Tente de supprimer les dépendances à tous les objets ne faisant pas partie de la publication.
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 sur des Abonnés SQL Server 2005. La réplication de tables qui possèdent des colonnes FILESTREAM sur des Abonnés SQL Server 2000 n'est pas prise en charge, quelle que soit la façon dont cette option de schéma est définie. Consultez l'option connexe 0x800000000.
0x200000000
Convertit les types de données de date et d'heure (date, time, datetimeoffset et datetime2) introduits dans SQL Server 2008 en types de données pris en charge dans les versions antérieures de SQL Server. Pour plus d'informations sur la façon dont ces types sont mappés, consultez la section « Mappage des nouveaux types de données pour les versions antérieures » dans Utilisation de plusieurs versions de SQL Server dans une topologie de réplication.
0x400000000
Réplique l'option de compression pour les données et les index. Pour plus d'informations, consultez Création de tables et d'index compressés.
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 dans 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é à l'Abonné. Pour plus d'informations sur la création d'objets avant d'appliquer l'instantané, consultez Exécution de scripts avant et après l'application de la capture instantanée.
Consultez l'option connexe 0x100000000.
0x1000000000
Convertit les types définis par l'utilisateur (UDT) du common language runtime (CLR) en varbinary(max) afin que les colonnes de type UDT puissent être répliquées sur les Abonnés qui exécutent SQL Server 2005.
0x2000000000
Convertit le type de données hierarchyid en varbinary(max) afin que les colonnes de type hierarchyid puissent être répliquées sur les Abonnés qui exécutent SQL Server 2005. Pour plus d'informations sur l'utilisation de colonnes hierarchyid dans les tables répliquées, consultez hierarchyid (Transact-SQL).
0x4000000000
Réplique tous les index filtrés sur la table. Pour plus d'informations sur les index filtrés, consultez Règles de conception d'index filtrés.
0x8000000000
Convertit les types de données geography et geometry en type varbinary(max) afin que les colonnes de ces types puissent être répliquées sur les Abonnés qui exécutent SQL Server 2005.
0x10000000000
Réplique les index sur les colonnes de type geography et geometry.
Si la valeur est NULL, le système génère automatiquement une option de schéma valide pour l'article. Le tableau Option de schéma par défaut de la section Notes montre la valeur qui est choisie en fonction du type de l'article. En outre, toutes les valeurs schema_option ne sont pas valides pour chaque type de réplication et d'article. Le tableau Option de schéma valide de la section Notes montre les options qui peuvent être spécifiées pour un type d'article donné.
Notes
Le paramètre schema_option affecte uniquement les options de réplication de l'instantané initial. Une fois que le schéma initial a été généré par l'Agent d'instantané et appliqué sur l'abonné, la réplication des modifications du schéma de publication sur l'abonné s'effectue en fonction des règles de réplication des modifications de schéma et de la valeur du paramètre replicate_ddl spécifié dans sp_addmergepublication. Pour plus d'informations, consultez Modification du schéma dans les bases de données de publication.
[ @subset_filterclause= ] 'subset_filterclause'
Clause WHERE définissant le filtrage horizontal d'un article de table sans spécification du mot WHERE. L'argument subset_filterclause est défini comme étant de type nvarchar(1000), avec une chaîne vide comme valeur par défaut.Important
Pour des raisons de performances, il est recommandé de ne pas appliquer de fonctions aux noms de colonnes dans les clauses de filtres de lignes paramétrables, comme LEFT([MyColumn]) = SUSER_SNAME(). Si vous utilisez HOST_NAME dans une clause de filtre et que vous remplacez la valeur de HOST_NAME, vous pouvez être amené à convertir les types de données à l'aide de CONVERT. Pour plus d'informations sur les recommandations dans ce cas de figure, consultez la section se rapportant au remplacement de la valeur de HOST_NAME() dans Filtres de lignes paramétrés.
[ @article_resolver= ] 'article_resolver'
Outil 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 du type varchar(255), avec NULL comme valeur par défaut. Les valeurs disponibles pour ce paramètre sont répertoriées dans la liste des outils de résolution personnalisés Microsoft. Si la valeur fournie ne correspond pas à l'un des outils de résolution Microsoft, SQL Server utilise l'outil de résolution spécifié et non celui qui est fourni par le système. Utilisez la procédure sp_enumcustomresolvers pour établir la liste des outils de résolution personnalisés disponibles. Pour plus d'informations, consultez Exécution de la logique métier lors de la synchronisation de fusion et Détection et résolution avancées des conflits de réplication de fusion.[ @resolver_info= ] 'resolver_info'
Permet de définir les informations supplémentaires requises par un outil de résolution personnalisé. Certains outils de résolution Microsoft nécessitent une colonne en guise d'entrée. L'argument resolver_info est du type nvarchar(255), avec NULL comme valeur par défaut. Pour plus d'informations, consultez Programmes de résolution COM Microsoft.[ @source_owner= ] 'source_owner'
Nom du propriétaire de source_object. source_owner est de type sysname et sa valeur par défaut est NULL. Si la valeur NULL est affectée à l'argument, l'utilisateur actuel est supposé être le propriétaire.[ @destination_owner= ] 'destination_owner'
Propriétaire de l'objet dans la base de données d'abonnement, si ce n'est pas « dbo ». destination_owner est du type sysname, avec NULL comme valeur par défaut. Si la valeur NULL est affectée à l'argument, « dbo » est supposé être le propriétaire.[ @vertical_partition= ] 'column_filter'
Active ou désactive le filtrage de colonne sur une article de table. L'argument vertical_partition est du type nvarchar(5), avec FALSE comme valeur par défaut.false indique l'absence de filtrage vertical et la publication de toutes les colonnes.
true supprime toutes les colonnes à l'exception des colonnes de clé primaire déclarée et des colonnes ROWGUID. Les colonnes sont ajoutées au moyen de sp_mergearticlecolumn.
[ @auto_identity_range= ] 'automatic_identity_range'
Active et désactive la gestion automatique des plages d'identité pour cet article de table sur une publication lors de sa création. L'argument auto_identity_range est du type nvarchar(5), avec FALSE comme valeur par défaut. true active la gestion automatique des plages d'identité, tandis que false la désactive.Notes
auto_identity_range est déconseillé et n'est fourni qu'à des fins de compatibilité descendante. Vous devez utiliser identityrangemanagementoption afin de spécifier les options de gestion des plages d'identité. Pour plus d'informations, consultez Réplication de 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 pour ses propres Abonnés. pub_identity_range est du type bigint, avec NULL comme valeur par défaut. Vous devez spécifier ce paramètre si identityrangemanagementoption a la valeur auto ou si auto_identity_range a la valeur true.[ @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 du type bigint, avec NULL comme valeur par défaut. Vous devez spécifier ce paramètre si identityrangemanagementoption a la valeur auto ou si auto_identity_range a la valeur true.Notes
identity_range contrôle la taille des plages d'identité sur les Abonnés de republication utilisant les précédentes versions de SQL Server.
[ @threshold= ] threshold
Valeur de pourcentage qui contrôle le moment où l'Agent de fusion affecte une nouvelle plage d'identité. Lorsque le pourcentage des valeurs spécifiées dans threshold est utilisé, l'Agent de fusion crée une nouvelle plage d'identité. L'argument threshold est du type int, avec NULL comme valeur par défaut. Vous devez spécifier ce paramètre si identityrangemanagementoption a la valeur auto ou si auto_identity_range a la valeur true.[ @verify_resolver_signature= ] verify_resolver_signature
Spécifie si une signature numérique est vérifiée avant d'utiliser un outil de résolution dans la réplication de fusion. verify_resolver_signature est de type int, avec 1 comme valeur par défaut.0 indique que la signature ne sera pas vérifiée.
1 indique que la signature sera vérifiée pour déterminer si elle provient d'une source approuvée.
[ @destination_object= ] 'destination_object'
Nom de l'objet dans la base de données d'abonnement. destination_object est de type sysname, avec comme valeur par défaut le contenu de @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 de @source_object écrase la valeur de destination_object.[ @allow_interactive_resolver= ] 'allow_interactive_resolver'
Active ou désactive l'utilisation du résolveur interactif sur un article. L'argument allow_interactive_resolver est du type nvarchar(5), avec FALSE comme valeur par défaut. La valeur true active l'utilisation du résolveur interactif sur l'article et la valeur false la désactive.Notes
L'outil de résolution interactif n'est pas pris en charge par les Abonnés SQL Server Compact 3.5 SP2.
[ @fast_multicol_updateproc= ] 'fast_multicol_updateproc'
Ce paramètre est déconseillé et n'est maintenu que dans un but de compatibilité ascendante avec les scripts déjà établis.[ @check_permissions= ] check_permissions
Image bitmap des autorisations au niveau de la table qui seront vérifiées lorsque l'Agent de fusion appliquera les modifications au serveur de publication. Si la connexion d'accès/le compte d'utilisateur du serveur de publication utilisé par le processus de fusion ne possède pas les autorisations de table appropriées, les modifications non valides sont enregistrées en tant que conflits. L'argument check_permissions est du type int, et peut être le produit | (OR au niveau du bit) 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
Signale que l'action entreprise par cette procédure stockée peut invalider un instantané existant. force_invalidate_snapshot est du type bit, avec 0 comme valeur par défaut.0 indique que l'ajout d'un article n'invalide l'instantané. Si la procédure stockée détecte que la modification ne nécessite pas un nouvel instantané, une erreur se produit et aucune modification n'est effectuée.
1 indique que l'ajout d'un article peut entraîner l'invalidation de l'instantané. En outre, s'il existe déjà des abonnements nécessitant un e nouvel instantané, cette valeur autorise à marquer l'instantané existant comme obsolète et à générer un nouvel instantané. force_invalidate_snapshot a la valeur 1 lors de l'ajout d'un article à une publication avec un instantané existant.
[ @published_in_tran_pub= ] '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 du type nvarchar(5), avec FALSE comme valeur par défaut. La valeur true indique 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. L'argument force_reinit_subscription est de type bit, avec 0 comme valeur par défaut.0 indique 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 effectuée.
1 indique que les modifications apportées à l'article de fusion entraînent la réinitialisation des abonnements existants et autorise la réinitialisation de l'abonnement. force_reinit_subscription prend la valeur 1 lorsque subset_filterclause spécifie un filtre de lignes paramétré.
[ @logical_record_level_conflict_detection= ] 'logical_record_level_conflict_detection'
Spécifie le niveau de détection des conflits pour un article qui est membre d'un enregistrement logique. logical_record_level_conflict_detection est du type nvarchar(5), avec FALSE comme valeur par défaut.La valeur true indique qu'un conflit sera détecté si des modifications sont apportées à un point quelconque de l'enregistrement logique.
La valeur false indique que la détection de conflit par défaut est utilisée telle que spécifiée par column_tracking. Pour plus d'informations, consultez Regroupements des modifications apportées à des lignes connexes à l'aide d'enregistrements logiques.
Notes
Étant donné que les enregistrements logiques ne sont pas pris en charge par les Abonnés SQL Server Compact 3.5 SP2, vous devez spécifier la valeur false pour logical_record_level_conflict_detection afin de prendre en charge ces Abonnés.
[ @logical_record_level_conflict_resolution= ] 'logical_record_level_conflict_resolution'
Spécifie le niveau de résolution des conflits pour un article qui est membre d'un enregistrement logique. logical_record_level_conflict_resolution est du type nvarchar(5), avec FALSE comme valeur par défaut.La valeur true indique que l'enregistrement logique gagnant complet remplace l'enregistrement logique perdant.
La valeur false spécifie que les lignes gagnantes ne sont pas limitées à l'enregistrement logique. Si la valeur de logical_record_level_conflict_detection est true, celle de logical_record_level_conflict_resolution doit être également définie sur true. Pour plus d'informations, consultez Regroupements des modifications apportées à des lignes connexes à l'aide d'enregistrements logiques.
Notes
Étant donné que les enregistrements logiques ne sont pas pris en charge par les Abonnés SQL Server Compact 3.5 SP2, vous devez spécifier la valeur false pour logical_record_level_conflict_resolution afin de prendre en charge ces Abonnés.
[ @partition_options= ] partition_options
Définit la façon dont les données de l'article sont partitionnées, ce qui permet d'optimiser les performances lorsque toutes les lignes appartiennent à une seule partition ou à un seul abonnement. partition_options est de type tinyint et peut avoir l'une des valeurs suivantes.Valeur
Description
0 (par défaut)
Le filtrage de l'article est statique ou il ne produit pas un sous-ensemble unique de données pour chaque partition, c'est-à-dire une partition en « chevauchement ».
1
Les partitions se chevauchent, et les mises à jour DML (langage de manipulation des données) effectuées sur l'abonné ne peuvent pas modifier la partition à laquelle une ligne appartient.
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.
Notes
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 de type int, avec 0 comme valeur par défaut. 0 indique que l'article n'est pas ordonné, et toute autre valeur représente la valeur ordinale de l'ordre de traitement pour 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, l'ordre de traitement est déterminé par l'ordre du surnom de l'article dans la table système sysmergearticles. Pour plus d'informations, consultez Spécification de l'ordre de traitement d'articles 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 Optimisation des performances de la réplication de fusion avec les articles en téléchargement seul. subscriber_upload_options est de type tinyint et peut avoir l'une des valeurs suivantes.Valeur
Description
0 (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 téléchargées sur le serveur de publication.
2
Les modifications ne sont pas autorisées sur l'abonné.
Notes
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= ] identityrangemanagementoption
Spécifie le mode de gestion des plages d'identité pour l'article. identityrangemanagementoption est du type nvarchar(10) et peut prendre l'une des valeurs suivantes.Valeur
Description
none
Désactive la gestion automatique des plages d'identité.
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 (par défaut)
Est défini par défaut avec la valeur nonelorsque la valeur de auto_identity_range n'est pas true.
Pour la compatibilité ascendante, lorsque la valeur de identityrangemanagementoption est NULL, la valeur de auto_identity_range est vérifiée. Cependant, lorsque la valeur de identityrangemanagementoption n'est pas NULL, la valeur de auto_identity_range est ignorée. Pour plus d'informations, consultez Réplication de colonnes d'identité.
[ @delete_tracking= ] 'delete_tracking'
Indique si les suppressions sont répliquées. delete_tracking est du type nvarchar(5), avec TRUE comme valeur par défaut. La valeur false indique que les suppressions ne sont pas répliquées, tandis que la valeur true indique qu'elles le sont, ce qui correspond au comportement normal pour la réplication de fusion. Lorsque delete_tracking a la valeur false, 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
L'affectation de la valeur false à delete_tracking conduit à 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.
Notes
Il est impossible de définir les options de delete_tracking à l'aide de l'Assistant Nouvelle publication ou de la boîte de dialogue Propriétés de la publication.
[ @compensate_for_errors= ] 'compensate_for_errors'
Indique si des actions de compensation sont entreprises en cas d'erreur au cours de la synchronisation. compensate_for_errors i est du type nvarchar(5), avec FALSE comme valeur par défaut. Lorsque la valeur true est définie, les modifications qui ne peuvent pas être appliquées sur un abonné ou sur un serveur de publication au cours de la synchronisation entraînent toujours des actions de compensation destinées à annuler les modifications ; toutefois, un abonné configuré de manière incorrecte qui génère une erreur peut entraîner l'annulation des modifications sur d'autres abonnés et serveurs de publication. La valeur false désactive ces actions de compensation, mais les erreurs sont toujours enregistrées dans le journal comme une compensation et les fusions ultérieures tenteront encore d'appliquer les modifications jusqu'à ce qu'elles aboutissent.Notes
Pour les abonnements par extraction sur les Abonnés exécutant Microsoft SQL Server 2000 8.00.858 ou version antérieure (y compris SP3), des actions de compensation se produisent encore même si compensate_for_errors a la valeur false.
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= ] 'stream_blob_columns'
Spécifie l'utilisation d'une optimisation du flux de données lors de la réplication de colonnes d'objets BLOB. stream_blob_columns est de type nvarchar(5), avec FALSE comme valeur par défaut. true signifie que l'optimisation sera tentée. stream_blob_columns a la valeur True si FILESTREAM est activé. Ainsi les données FILESTREAM sont répliquées de façon optimale et l'utilisation de la mémoire est réduite. Pour forcer les articles de la table FILESTREAM à ne pas utiliser le flux d'objet blob, utilisez sp_changemergearticle pour affecter 'false' à stream_blob_columns.Important
L'activation de cette optimisation de mémoire peut réduire les performances de l'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.
Notes
Certaines fonctionnalités de réplication de fusion, telles que les enregistrements logiques, peuvent encore empêcher l'utilisation de l'optimisation du flux lors de la réplication d'objets BLOB, même lorsque stream_blob_columns a la valeur true.
Valeurs du code de retour
0 (succès) ou 1 (échec)
Notes
sp_addmergearticle est utilisée 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 la valeur 3 pour partition_options, il ne peut y avoir qu'un seul abonnement pour chaque partition de données dans 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é.
Si vous spécifiez la valeur 3 pour partition_options, les métadonnées sont nettoyées à chaque exécution de l'Agent de fusion et l'instantané partitionné expire plus rapidement. Lorsque vous utilisez cette option, pensez à activer l'instantané partitionné requis par l'abonné. Pour plus d'informations, consultez Captures instantanées des publications de fusion avec des filtres paramétrés.
Pour ajouter un article avec un filtre horizontal statique, à l'aide de subset_filterclause, à une partition existante dont les articles possèdent des filtres paramétrés, il est nécessaire de réinitialiser les abonnements.
Lorsque vous spécifiez processing_order, il est recommandé de conserver des écarts entre les valeurs d'ordre des articles, pour faciliter la définition ultérieure de nouvelles valeurs. Par exemple, si vous avez trois articles Article1, Article2 et Article3, définissez processing_order sur 10, 20 et 30, plutôt que sur 1, 2 et 3. Pour plus d'informations, consultez Spécification de l'ordre de traitement d'articles de fusion.
Tableau des options de schéma par défaut
Le tableau ci-dessous présente la valeur par défaut qui est définie par la procédure stockée si une valeur NULL est spécifiée pour schema_option, ce qui dépend du type de l'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 |
|
view schema only |
0x01 |
Notes
Si la publication prend en charge les versions précédentes de SQL Server, l'option de schéma par défaut de table est 0x30034FF1.
Tableau des options de schéma valides
Le tableau suivant présente les valeurs autorisées pour schema_option en fonction du type de l'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 |
Exemple
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
Requiert l'appartenance au rôle de serveur fixe sysadmin ou au rôle de base de données fixe db_owner.
Voir aussi