sp_changemergearticle (Transact-SQL)
Modifie les propriétés d'un article de fusion. Cette procédure stockée est exécutée sur la base de données de publication du serveur de publication.
Syntaxe
sp_changemergearticle [ @publication = ] 'publication'
, [ @article = ] 'article'
[ , [ @property = ] 'property' ]
[ , [ @value = ] 'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
Arguments
[ @publication=] 'publication'
Nom de la publication dans laquelle existe l'article. L'argument publication est de type sysname et n'a pas de valeur par défaut.[ @article=] 'article'
Nom de l'article à modifier. article est de type sysname, sans valeur par défaut.[ @property=] 'property'
Propriété à modifier pour l'article et la publication donnés. L'argument property est de type nvarchar(30), et peut prendre l'une des valeurs répertoriées dans le tableau.[ @value=] 'value'
Nouvelle valeur de la propriété spécifiée. L'argument value est de type nvarchar(1000), et peut prendre l'une des valeurs répertoriées dans le tableau.Le tableau ci-dessous décrit les propriétés des articles et les valeurs de ces propriétés.
Propriété
Valeurs
Description
allow_interactive_resolver
true
Permet d'utiliser un outil de résolution interactif pour l'article.
false
Désactive l'utilisation d'un outil de résolution interactif pour l'article.
article_resolver
Outil de résolution personnalisé pour l'article. S'applique à un article de table uniquement.
check_permissions (bitmap)
0x00
Les autorisations au niveau de la table ne sont pas vérifiées.
0x10
Les autorisations au niveau de la table sont vérifiées dans le serveur de publication avant que les instructions INSERT effectuées sur l'Abonné ne soient appliquées dans le serveur de publication.
0x20
Les autorisations au niveau de la table sont vérifiées dans le serveur de publication avant que les instructions UPDATE effectuées sur l'Abonné ne soient appliquées dans le serveur de publication.
0x40
Les autorisations au niveau de la table sont vérifiées sur le serveur de publication avant que les instructions DELETE effectuées sur l'Abonné ne soient appliquées dans le serveur de publication.
column_tracking
true
Active le suivi au niveau de la colonne. S'applique à un article de table uniquement.
RemarqueLe suivi au niveau de la colonne ne peut pas être utilisé lorsque vous publiez des tables contenant plus de 246 colonnes.false
Désactive le suivi au niveau de la colonne et conserve la détection des conflits au niveau de la ligne. S'applique à un article de table uniquement.
compensate_for_errors
true
Des actions de compensation sont effectuées lorsque des erreurs se produisent au cours de la synchronisation. Pour plus d'informations, consultez sp_addmergearticle.
false
Les actions de compensation ne sont pas effectuées, ce qui est le comportement par défaut. Pour plus d'informations, consultez sp_addmergearticle.
ImportantBien 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.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.
delete_tracking
true
Les instructions DELETE sont répliquées, ce qui est le comportement par défaut.
false
Les instructions DELETE ne sont pas répliquées.
ImportantLa définition de delete_tracking sur la valeur false entraîne une non convergence, et les lignes effacées doivent être supprimées manuellement.description
Entrée descriptive de l'article
destination_owner
Nom du propriétaire de l'objet dans la base de données d'abonnement, si ce n'est pas dbo.
identity_range
bigint qui spécifie la taille de plage à utiliser lors de l'affectation de nouvelles valeurs d'identité si l'option identityrangemanagementoption a la valeur auto ou si auto_identity_range a la valeur truepour l'article. S'applique à un article de table uniquement. Pour plus d'informations, consultez la section « Réplication de la fusion » de Réplication de colonnes d'identité.
identityrangemanagementoption
manual
Désactive la gestion automatique des plages d'identité. Marque les colonnes d'identité en utilisant NOT FOR REPLICATION pour permettre la gestion manuelle des plages d'identité. Pour plus d'informations, consultez Réplication de colonnes d'identité.
aucun
Désactive toute la gestion des plages d'identité.
logical_record_level_conflict_detection
true
Un conflit est détecté si des modifications sont apportées à un point quelconque de l'enregistrement logique. Nécessite que logical_record_level_conflict_resolution ait la valeur true.
false
La détection des conflits est utilisée comme spécifié par column_tracking.
logical_record_level_conflict_resolution
true
L'enregistrement logique gagnant complet remplace l'enregistrement logique perdant.
false
Les lignes gagnantes ne sont pas limitées à l'enregistrement logique.
partition_options
0
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 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.
RemarqueSi 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, l'abonnement existant est supprimé.pre_creation_command
aucun
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
Supprime la table avant de la recréer.
truncate
Tronque la table de destination.
processing_order
int qui indique l'ordre de traitement des articles dans une publication de fusion.
pub_identity_range
bigint qui spécifie la taille de plage allouée à un Abonné disposant d'un abonnement serveur si l'option identityrangemanagementoption a la valeur auto ou si auto_identity_range a la valeur true pour l'article. Cette plage d'identité est réservée à un Abonné de republication qui peut l'allouer à ses propres Abonnés. S'applique à un article de table uniquement. Pour plus d'informations, consultez la section « Réplication de la fusion » de Réplication de colonnes d'identité.
published_in_tran_pub
true
L'article est également publié dans une publication transactionnelle.
false
L'article n'est pas également publié dans une publication transactionnelle.
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.
schema_option (bitmap)
Pour plus d'informations, consultez la section Remarques plus loin dans cette rubrique.
0x00
Désactive la génération de scripts par l'Agent d'instantané et utilise le script fourni dans l'argument creation_script.
0x01
Génère le script de création d'objet (CREATE TABLE, CREATE PROCEDURE, etc.).
0x10
Génère un index cluster correspondant.
0x20
Convertit les types de données définis par l'utilisateur 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.
0x80
Inclut l'intégrité référentielle déclarée dans les clés primaires.
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 clés uniques, si celles-ci sont définies, sur un article de table.
0x8000
Génère des instructions ALTER TABLE lors de la création d'un script de contraintes.
0x10000
Réplique les contraintes CHECK en tant que NOT FOR REPLICATION pour qu'elles ne s'appliquent pas au cours de 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 des statistiques de 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 tout schéma non encore présent chez 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)) qui ont été 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 les autorisations.
0x80000000
Tente de supprimer les dépendances envers tous les objets qui ne font 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) qui sont 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.
NULL
Le système génère automatiquement une option de schéma valide pour l'article.
status
active
Exécution du script de traitement initial pour publier la table.
unsynced
Le script de traitement initial servant à publier la table sera exécuté lors de la prochaine exécution de l'Agent d'instantané.
stream_blob_columns
true
Une optimisation de flux de données est utilisée lors de la réplication de colonnes d'objets binaires volumineux (BLOB). Toutefois, certaines fonctionnalités de réplication de fusion, telles que les enregistrements logiques, peuvent encore empêcher l'utilisation de l'optimisation du flux. 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, affectez la valeur False à stream_blob_columns.
ImportantL'activation de cette optimisation de mémoire peut nuire aux 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.false
L'optimisation n'est pas utilisée lors de la réplication de colonnes BLOB.
subscriber_upload_options
0
Aucune restriction sur les mises à jour effectuées sur un Abonné disposant d'un abonnement client ; les modifications sont téléchargées sur le serveur de publication. La modification de cette propriété peut exiger la réinitialisation des Abonnés existants.
1
Les modifications sont autorisées sur un Abonné disposant d'un abonnement client, mais elles ne sont pas téléchargées sur le serveur de publication.
2
Les modifications ne sont pas autorisées sur un Abonné disposant d'un abonnement client.
subset_filterclause
Clause WHERE spécifiant le filtrage horizontal. S'applique à un article de table uniquement.
ImportantAfin d'améliorer les performances, il est déconseillé d'appliquer des fonctions aux noms de colonne dans les clauses de filtres de lignes paramétrés, telles que 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.threshold
Pourcentage de valeur utilisé pour les Abonnés exécutant SQL Server Compact 3.5 SP2 ou des versions antérieures de SQL Server. threshold contrôle à quel moment l'Agent de fusion affecte une nouvelle plage d'identité. Lorsque le pourcentage de valeurs spécifié dans le seuil est utilisé, l'Agent de fusion crée une nouvelle plage d'identité. Cette propriété est utilisée lorsque identityrangemanagementoption a la valeur auto ou que auto_identity_range a la valeur true. S'applique à un article de table uniquement. Pour plus d'informations, consultez la section « Réplication de la fusion » de Réplication de colonnes d'identité.
verify_resolver_signature
1
La signature numérique d'un outil de résolution personnalisé est vérifiée pour déterminer s'il provient d'une source approuvée.
0
La signature numérique d'un outil de résolution personnalisé n'est pas vérifiée pour déterminer s'il provient d'une source approuvée.
NULL (valeur par défaut)
Retourne la liste des valeurs prises en charge pour property.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Signale que l'action entreprise par cette procédure stockée peut invalider un instantané existant. force_invalidate_snapshot est du type bit, avec 0 comme valeur par défaut.0 indique que les modifications apportées à l'article de fusion ne génèrent pas l'invalidation de 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 les modifications apportées à l'article de fusion peuvent entraîner l'invalidation de l'instantané. Par ailleurs, s'il existe déjà des abonnements nécessitant un instantané, cette valeur autorise à marquer l'instantané existant comme obsolète et à en générer un nouveau.
Consultez la section Remarques pour connaître les propriétés dont la modification nécessite la génération d'un nouvel instantané.
[ @force_reinit_subscription = ] force_reinit_subscription
Confirme que l'action entreprise par cette procédure stockée peut nécessiter la réinitialisation des abonnements existants. L'argument force_reinit_subscription est de type bit, avec 0 comme valeur par défaut.0 indique que les modifications apportées à l'article de fusion n'entraînent pas la réinitialisation de l'abonnement. Si la procédure stockée détecte que la modification requiert la réinitialisation des abonnements existants, une erreur 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 cette opération à se réaliser.
Voir la section Notes pour connaître les propriétés qui, lorsqu'elles sont modifiées, nécessitent la réinitialisation de tous les abonnements existants.
Valeurs des codes retournés
0 (succès) ou 1 (échec)
Notes
La procédure sp_changemergearticle est utilisée dans la réplication de fusion.
Étant donné que la procédure sp_changemergearticle est utilisée pour modifier des propriétés d'article initialement spécifiées à l'aide de sp_addmergearticle, consultez sp_addmergearticle pour plus d'informations sur ces propriétés.
Les modifications apportées aux propriétés suivantes nécessitent la génération d'un nouvel instantané, et vous devez attribuer la valeur 1 au paramètre force_invalidate_snapshot :
check_permissions
column_tracking
destination_owner
pre_creation_cmd
schema_options
subset_filterclause
Les modifications apportées aux propriétés suivantes nécessitent la réinitialisation des abonnements existants, et vous devez attribuer la valeur 1 au paramètre force_reinit_subscription :
check_permissions
column_tracking
destination_owner
subscriber_upload_options
subset_filterclause
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é demandé par l'abonné. Pour plus d'informations, consultez Captures instantanées des publications de fusion avec des filtres paramétrés.
Lorsque vous définissez la propriété column_tracking, si la table est déjà publiée dans d'autres publications de fusion, la valeur du suivi des colonnes doit être la même que celle qui est utilisée par les articles existants basés sur cette table. Ce paramètre concerne uniquement les articles de table.
Si plusieurs publications publient des articles basés sur la même table sous-jacente, la modification de la propriété delete_tracking ou de la propriété compensate_for_errors pour un article entraîne le même changement sur les autres articles basés sur cette même table.
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.
Lorsque la valeur de schema_option est modifiée, le système n'effectue pas de mise à jour au niveau du bit. Cela signifie que lorsque vous définissez schema_option à l'aide de sp_changemergearticle, les paramètres de bit existants peuvent être désactivés. Pour conserver les paramètres existants, vous devez effectuer & (opération AND au niveau du bit) entre la valeur que vous définissez et la valeur actuelle de schema_option, qui peut être déterminée en exécutant sp_helpmergearticle.
Tableau des options de schéma valides
Le tableau suivant présente les valeurs autorisées pour schema_optionen 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 @article AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article = N'SalesOrderHeader';
-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks2008R2]
EXEC sp_changemergearticle
@publication = @publication,
@article = @article,
@property = N'column_tracking',
@value = N'true',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
Autorisations
Seuls les membres appartenant au rôle serveur fixe sysadmin ou au rôle de base de données fixe db_owner peuvent exécuter sp_changemergearticle.
Voir aussi