Partager via


sp_changemergearticle (Transact-SQL)

Modifie les propriétés d'un article de fusion. Cette procédure stockée est exécutée au niveau du serveur de publication dans la base de données de publication.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

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.

    RemarqueRemarque
    Le 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.

    ImportantImportant
    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.

    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.

    ImportantImportant
    La 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.

    RemarqueRemarque
    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, 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 de capture instantanée 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 pour qu'elles ne s'appliquent pas au cours de 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 pour une table partitionnée.

     

    0x100000

    Réplique le schéma de partition pour 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 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)) 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 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) 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 la capture instantanée à l'Abonné. Pour plus d'informations sur la création d'objets avant d'appliquer la capture instantanée, 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 de capture instantanée.

    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 tout de même empêcher d'utiliser l'optimisation de flux.

    ImportantImportant
    L'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.

    ImportantImportant
    Afin 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 SP1 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 une capture instantanée existante. 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 la capture instantanée. Si la procédure stockée détecte que la modification nécessite une nouvelle capture instantanée, un message d'erreur est généré et aucune modification n'est effectuée.

    1 indique que les modifications apportées à l'article de fusion peuvent entraîner l'invalidation de la capture instantanée. Par ailleurs, s'il existe déjà des abonnements nécessitant une nouvelle capture instantanée, cette valeur autorise à marquer la capture instantanée existante comme obsolète et à en générer une nouvelle.

    Voir la section Notes pour connaître les propriétés qui, lorsque elles sont modifiées, nécessitent la génération d'une nouvelle capture instantanée.

  • [ @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'une nouvelle capture instantanée, 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 la capture instantanée partitionnée expire plus rapidement. Lorsque vous utilisez cette option, pensez à activer la capture instantanée partitionnée demandée 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 [AdventureWorks]
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.