sp_addmergearticle (Transact-SQL)

Mis à jour : 14 avril 2006

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.

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

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 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= ] 'description'
    Description de l'article. description est de type nvarchar(255), avec une valeur par défaut NULL.
  • [ @column_tracking= ] 'column_tracking'
    Configuration pour le niveau de suivi de colonne. L'argument column_tracking est de type nvarchar(10), avec la valeur FALSE par défaut. La valeur true active le suivi de colonne. La valeur false le désactive et laisse la détection de conflits 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.

    ms174329.note(fr-fr,SQL.90).gifRemarque :
    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 de capture instantanée.
  • [ @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 la capture instantanée. pre_creation_cmd est du type nvarchar(10) et peut prendre l'une des valeurs suivantes.

    Valeur Description

    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 (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 2005 Compact Edition.

    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.

    ms174329.note(fr-fr,SQL.90).gifRemarque :
    Les scripts de création ne sont pas exécutés sur les Abonnés SQL Server 2005 Compact Edition.
  • [ @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

  • [ @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.

    ms174329.note(fr-fr,SQL.90).gifImportant :
    Pour des raisons de performances, il est recommandé de ne pas appliquer de fonctions aux noms de colonnes dans les clauses des filtres paramétrés, 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 Outils 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.

    ms174329.note(fr-fr,SQL.90).gifRemarque :
    auto_identity_range a été désapprouvé et n'est fourni qu'à des fins de compatibilité ascendante. 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.

    ms174329.note(fr-fr,SQL.90).gifRemarque :
    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 de l'outil de résolution 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 de l'outil de résolution interactif sur l'article et la valeur false la désactive.

    ms174329.note(fr-fr,SQL.90).gifRemarque :
    L'outil de résolution interactif n'est pas pris en charge par les Abonnés SQL Server 2005 Compact Edition.
  • [ @fast_multicol_updateproc= ] 'fast_multicol_updateproc'
    Ce paramètre est à déconseiller 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 une capture instantanée existante. force_invalidate_snapshot est du type bit, avec 0 comme valeur par défaut.

    0 indique que l'ajout d'un article n'invalide la capture instantanée. Si la procédure stockée détecte que la modification ne nécessite pas une nouvelle capture instantanée, 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 la capture instantanée. En outre, 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 à générer une nouvelle capture instantanée. force_invalidate_snapshot a la valeur 1 lors de l'ajout d'un article à une publication avec une capture instantanée existante.

  • [ @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 ligne 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.

    true indique qu'un conflit sera détecté si des modifications sont apportées à un point quelconque de l'enregistrement logique.

    false spécifie que la détection des conflits par défaut est utilisée comme spécifié par column_tracking. Pour plus d'informations, consultez Regroupements des modifications apportées à des lignes connexes à l'aide d'enregistrements logiques.

    ms174329.note(fr-fr,SQL.90).gifRemarque :
    Étant donné que les enregistrements logiques ne sont pas pris en charge par les Abonnés SQL Server 2005 Compact Edition, 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.

    true indique que l'enregistrement gagnant complet remplace l'enregistrement logique perdant.

    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.

    ms174329.note(fr-fr,SQL.90).gifRemarque :
    Étant donné que les enregistrements logiques ne sont pas pris en charge par les Abonnés SQL Server 2005 Compact Edition, 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.

    ms174329.note(fr-fr,SQL.90).gifRemarque :
    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 du 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é.

    ms174329.note(fr-fr,SQL.90).gifRemarque :
    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

    aucun

    Désactive la gestion automatique des plages d'identité.

    manual

    Marque les colonnes 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)

    Prend par défaut la valeur none lorsque 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 des suppressions sont répliquées. delete_tracking est du type nvarchar(5), avec TRUE comme valeur par défaut. false indique que les suppressions ne sont pas répliquées, et true qu'elles le sont, ce qui est un comportement normal pour la réplication de fusion. Lorsque delete_tracking a la valeur false, les lignes supprimées sur l'Abonné doivent être retirées manuellement sur le serveur de publication, et les lignes supprimées sur le serveur de publication doivent être retirées manuellement sur l'Abonné.

    ms174329.note(fr-fr,SQL.90).gifImportant :
    La définition de delete_tracking sur la valeur false entraîne la 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.
    ms174329.note(fr-fr,SQL.90).gifRemarque :
    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 à un abonné ou à un serveur de publication au cours de la synchronisation entraînent toujours des actions de compensation pour annuler la modification ; cependant, un abonné incorrectement configuré qui génère une erreur peut entraîner des modifications sur d'autres abonnés et serveurs de publication à annuler. La valeur false désactive ces actions de compensation, bien que les erreurs soient toujours journalisées, comme avec la compensation, et que les fusions ultérieures continuent de tenter d'appliquer les modifications jusqu'à ce qu'elles aboutissent.

    ms174329.note(fr-fr,SQL.90).gifRemarque :
    Pour les abonnements par extraction de données sur les Abonnés exécutant Microsoft SQL Server 2000 versions 8.00.858 et antérieures (y compris SP3), des actions de compensation se produisent même si compensate_for_errors a la valeur false.
    ms174329.note(fr-fr,SQL.90).gifImportant :
    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 de l'optimisation du flux de données lors de la réplication de colonnes BLOB (binary large object). stream_blob_columns est du type nvarchar(5), avec FALSE comme valeur par défaut. true signifie que l'optimisation sera tentée.

    ms174329.note(fr-fr,SQL.90).gifImportant :
    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.
    ms174329.note(fr-fr,SQL.90).gifRemarque :
    Certaines fonctionnalités de réplication de fusion, comme les enregistrements logiques, peuvent toujours empêcher l'utilisation de l'optimisation du flux lors de la réplication d'objets BLOB (binary large objects), alors même que stream_blob_columns a la valeur true.

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 la capture instantanée partitionnée expire plus rapidement. Lorsque vous utilisez cette option, pensez à activer la capture instantanée partitionnée requise 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

Ce tableau 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

  • 0x0C034FD1 - publications compatibles SQL Server 2005 avec une capture instantanée en mode natif.
  • 0x08034FF1 - publications compatibles SQL Server 2005 avec une capture instantanée en mode caractères.
  • 0x30034FF1 - publications compatibles SQL Server 2000 et versions antérieures.

view schema only

0x01

ms174329.note(fr-fr,SQL.90).gifRemarque :
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

Autorisations

Requiert l'appartenance au rôle serveur fixe sysadmin ou au rôle de base de données fixe db_owner.

Valeurs du code de retour

0 (réussite) ou 1 (échec)

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.EmployeeID = 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

Voir aussi

Référence

sp_changemergearticle (Transact-SQL)
sp_dropmergearticle (Transact-SQL)
sp_helpmergearticle (Transact-SQL)
Procédures stockées de réplication (Transact-SQL)

Autres ressources

How to: Define an Article (Replication Transact-SQL Programming)
Publication de données et d'objets de base de données
Réplication de colonnes d'identité
Comment la réplication de fusion détecte et résout les conflits

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

14 avril 2006

Contenu modifié :
  • Mise à jour de la description de la valeur 0x20000000 du paramètre schema_option.

5 décembre 2005

Nouveau contenu :
  • Des informations ont été fournies sur les restrictions supplémentaires qui s'appliquent à la définition de l'option 0x20 pour le paramètre schema_option.
  • Les restrictions de colonnes des tables publiées ont été documentées.
Contenu modifié :
  • Mise à jour des informations concernant la valeur par défaut des options de schéma pour les articles de tables.