Partager via


sp_addarticle (Transact-SQL)

Crée un article et l'ajoute à une publication. Cette procédure stockée est exécutée au niveau du serveur de publication sur la base de données de publication.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

sp_addarticle [ @publication = ] 'publication'  
        , [ @article = ] 'article' 
    [ , [ @source_table = ] 'source_table' ]
    [ , [ @destination_table = ] 'destination_table' ] 
    [ , [ @vertical_partition = ] 'vertical_partition' ] 
    [ , [ @type = ] 'type' ] 
    [ , [ @filter = ] 'filter' ] 
    [ , [ @sync_object= ] 'sync_object' ] 
        [ , [ @ins_cmd = ] 'ins_cmd' ] 
    [ , [ @del_cmd = ] 'del_cmd' ] 
        [ , [ @upd_cmd = ] 'upd_cmd' ] 
    [ , [ @creation_script = ] 'creation_script' ] 
    [ , [ @description = ] 'description' ] 
    [ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ] 
    [ , [ @filter_clause = ] 'filter_clause' ] 
    [ , [ @schema_option = ] schema_option ] 
    [ , [ @destination_owner = ] 'destination_owner' ] 
    [ , [ @status = ] status ] 
    [ , [ @source_owner = ] 'source_owner' ] 
    [ , [ @sync_object_owner = ] 'sync_object_owner' ] 
    [ , [ @filter_owner = ] 'filter_owner' ] 
    [ , [ @source_object = ] 'source_object' ] 
    [ , [ @artid = ] article_ID  OUTPUT ] 
    [ , [ @auto_identity_range = ] 'auto_identity_range' ] 
    [ , [ @pub_identity_range = ] pub_identity_range ] 
    [ , [ @identity_range = ] identity_range ] 
    [ , [ @threshold = ] threshold ] 
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @use_default_datatypes = ] use_default_datatypes
    [ , [ @identityrangemanagementoption = ] identityrangemanagementoption ]
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' ] 

Arguments

  • [ @publication=] 'publication'
    Nom de la publication contenant l'article. Le nom doit être unique dans la base de données. 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 dans la publication. article est de type sysname et n'a pas de valeur par défaut.

  • [ @source_table = ] 'source_table'
    Ce paramètre a été déconseillé ; utilisez à la place source_object.

    Ce paramètre n'est pas pris en charge pour les serveurs de publication Oracle.

  • [ @destination_table = ] 'destination_table'
    Nom de la table de destination (abonnement), si elle diffère de source_tableou de la procédure stockée. destination_table est de type sysname, avec NULL comme valeur par défaut, ce qui signifie que source_table égale destination_table*.*

  • [ @vertical_partition = ] 'vertical_partition'
    Active ou désactive le filtrage de colonne sur un article de table. vertical_partition est de type nchar(5), avec FALSE comme valeur par défaut.

    false indique l'absence de filtrage vertical et la publication de toutes les colonnes.

    true efface toutes les colonnes, à l'exception de la clé primaire déclarée, des colonnes pouvant accepter des valeurs NULL sans valeur par défaut, et des colonnes clés uniques. Les colonnes sont ajoutées avec la procédure sp_articlecolumn.

  • [ @type = ] 'type'
    Est le type de l'article. type est de type sysname et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    aggregate schema only

    Fonction d'agrégation avec schéma uniquement

    func schema only

    Fonction avec schéma uniquement.

    indexed view logbased

    Article de vue indexée reposant sur un journal. Non pris en charge pour les serveurs de publication Oracle. Pour ce type d'article, il n'est pas nécessaire de publier la table de base séparément.

    indexed view logbased manualboth

    Article de vue indexée reposant sur un journal avec filtre manuel et vue manuelle. Cette option nécessite de spécifier les paramètres sync_object et filter. Pour ce type d'article, il n'est pas nécessaire de publier la table de base séparément. Non pris en charge pour les serveurs de publication Oracle.

    indexed view logbased manualfilter

    Article de vue indexée reposant sur un journal avec filtre manuel. Cette option nécessite de spécifier les paramètres sync_object et filter. Pour ce type d'article, il n'est pas nécessaire de publier la table de base séparément. Non pris en charge pour les serveurs de publication Oracle.

    indexed view logbased manualview

    Article de vue indexée reposant sur un journal avec vue manuelle. Cette option nécessite de spécifier le paramètre sync_object. Pour ce type d'article, il n'est pas nécessaire de publier la table de base séparément. Non pris en charge pour les serveurs de publication Oracle.

    indexed view schema only

    Vue indexée avec schéma uniquement. Pour ce type d'article, la table de base doit également être publiée.

    logbased (valeur par défaut)

    Article basé sur le journal.

    logbased manualboth

    Article reposant sur un journal, avec filtre manuel et vue manuelle. Cette option nécessite de spécifier les paramètres sync_object et filter. Non pris en charge pour les serveurs de publication Oracle.

    logbased manualfilter

    Article reposant sur un journal, avec filtre manuel. Cette option nécessite de spécifier les paramètres sync_object et filter. Non pris en charge pour les serveurs de publication Oracle.

    logbased manualview

    Article reposant sur un journal, avec vue manuelle. Cette option nécessite de spécifier le paramètre sync_object. Non pris en charge pour les serveurs de publication Oracle.

    proc exec

    Réplique l'exécution de la procédure stockée pour tous les abonnés de l'article. Non pris en charge pour les serveurs de publication Oracle. Nous vous recommandons d'utiliser l'option exec de procédure sérialisable au lieu d'exec de procédure. Pour plus d'informations, consultez la section « Types d'articles d'exécution de procédure stockée », dans Publication de l'exécution de procédures stockées dans la réplication transactionnelle. Non disponible lorsque la capture de données modifiées est activée.

    proc schema only

    Procédure avec schéma uniquement. Non pris en charge pour les serveurs de publication Oracle.

    serializable proc exec

    Réplique l'exécution de la procédure stockée uniquement si l'exécution se fait dans le contexte d'une transaction compatible avec la mise en série. Non pris en charge pour les serveurs de publication Oracle.

    La procédure stockée doit également être exécutée à l'intérieur d'une transaction explicite pour que l'exécution de la procédure soit répliquée.

    view schema only

    Vue avec schéma uniquement. Non pris en charge pour les serveurs de publication Oracle. Lorsque vous utilisez cette option, vous devez aussi publier la table de base.

  • [ @filter = ] 'filter'
    Procédure stockée (créée avec FOR REPLICATION) utilisée pour filtrer la table horizontalement. filter est de type nvarchar(386), avec NULL comme valeur par défaut. sp_articleview et sp_articlefilter doivent être exécutés manuellement pour créer la vue et la procédure stockée de filtre. Si la valeur par défaut n'est pas NULL, la procédure de filtre n'est pas créée (cela suppose que la procédure stockée est créée manuellement).

  • [ @sync_object = ] 'sync_object'
    Nom de la table ou de la vue utilisée pour produire le fichier de données représentant l'instantané de cet article. sync_object est de type nvarchar(386), avec NULL comme valeur par défaut. Si la valeur par défaut est NULL, la procédure sp_articleview est appelée pour créer automatiquement la vue utilisée pour générer le fichier de sortie. Ceci se produit après l'ajout d'une colonne quelconque avec la procédure sp_articlecolumn. Si la valeur par défaut n'est pas NULL, aucune vue n'est créée (cela suppose que la vue est créée manuellement).

  • [ @ins_cmd = ] 'ins_cmd'
    Type de commande de réplication utilisé pour répliquer des insertions pour cet article. ins_cmd est de type nvarchar(255) et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    NONE

    Aucune action n'est effectuée.

    CALL sp_MSins_table (default)

    ou

    CALL custom_stored_procedure_name

    Appelle l'exécution d'une procédure stockée sur l'Abonné. Pour recourir à cette méthode de réplication, utilisez schema_option pour spécifier la création automatique de la procédure stockée, ou créez la procédure stockée spécifiée dans la base de données de destination de chaque abonné de l'article. custom_stored_procedure est le nom d'une procédure stockée créée par l'utilisateur. sp_MSins_table contient le nom de la table de destination utilisé dans la partie _table du paramètre. Lorsque destination_owner est spécifié, il est ajouté devant le nom de la table de destination. Par exemple, pour la table ProductCategory appartenant au schéma Production sur l'Abonné, le paramètre serait CALL sp_MSins_ProductionProductCategory. Dans le cas d'un article dans une topologie de réplication d'homologue à homologue, le paramètre _table est ajouté avec une valeur GUID. La spécification de custom_stored_procedure n'est pas prise en charge pour la mise à jour des abonnés.

    SQL ou NULL

    Réplique une instruction INSERT. Des valeurs sont fournies pour l'instruction INSERT pour l'ensemble des colonnes publiées dans l'article. La commande suivante est répliquée lors des insertions :

    INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue)

    Pour plus d'informations, consultez Spécifier le mode de propagation des modifications des articles transactionnels.

  • [ @del_cmd =] 'del_cmd'
    Type de commande de réplication utilisé pour répliquer des suppressions pour cet article. del_cmd est de type nvarchar(255) et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    NONE

    Aucune action n'est effectuée.

    CALL sp_MSdel_table (valeur par défaut)

    ou

    CALL custom_stored_procedure_name

    Appelle l'exécution d'une procédure stockée sur l'Abonné. Pour recourir à cette méthode de réplication, utilisez schema_option pour spécifier la création automatique de la procédure stockée, ou créez la procédure stockée spécifiée dans la base de données de destination de chaque abonné de l'article. custom_stored_procedure est le nom d'une procédure stockée créée par l'utilisateur. sp_MSdel_table contient le nom de la table de destination utilisé dans la partie _table du paramètre. Lorsque destination_owner est spécifié, il est ajouté devant le nom de la table de destination. Par exemple, pour la table ProductCategory appartenant au schéma Production sur l'Abonné, le paramètre serait CALL sp_MSdel_ProductionProductCategory. Dans le cas d'un article dans une topologie de réplication d'homologue à homologue, le paramètre _table est ajouté avec une valeur GUID. La spécification de custom_stored_procedure n'est pas prise en charge pour la mise à jour des abonnés.

    XCALL sp_MSdel_table

    ou

    XCALL custom_stored_procedure_name

    Appelle une procédure stockée utilisant des paramètres de type XCALL. Pour recourir à cette méthode de réplication, utilisez schema_option pour spécifier la création automatique de la procédure stockée, ou créez la procédure stockée spécifiée dans la base de données de destination de chaque abonné de l'article. La spécification d'une procédure stockée créée par l'utilisateur n'est pas autorisée pour mettre à jour les Abonnés.

    SQL ou NULL

    Réplique une instruction DELETE. Toutes les valeurs de colonnes clés primaire sont fournies pour l'instruction DELETE. La commande suivante est répliquée lors des suppressions :

    DELETE FROM <table name> WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue

    Pour plus d'informations, consultez Spécifier le mode de propagation des modifications des articles transactionnels.

  • [ @upd_cmd =] 'upd_cmd'
    Type de commande de réplication utilisé pour répliquer des mises à jour pour cet article. upd_cmd est de type nvarchar(255) et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    NONE

    Aucune action n'est effectuée.

    CALL sp_MSupd_table

    ou

    CALL custom_stored_procedure_name

    Appelle l'exécution d'une procédure stockée sur l'Abonné. Pour recourir à cette méthode de réplication, utilisez schema_option pour spécifier la création automatique de la procédure stockée, ou créez la procédure stockée spécifiée dans la base de données de destination de chaque abonné de l'article.

    MCALL sp_MSupd_table

    ou

    MCALL custom_stored_procedure_name

    Appelle une procédure stockée utilisant des paramètres de type MCALL. Pour recourir à cette méthode de réplication, utilisez schema_option pour spécifier la création automatique de la procédure stockée, ou créez la procédure stockée spécifiée dans la base de données de destination de chaque abonné de l'article. custom_stored_procedure est le nom d'une procédure stockée créée par l'utilisateur. sp_MSupd_table contient le nom de la table de destination utilisé dans la partie _table du paramètre. Lorsque destination_owner est spécifié, il est ajouté devant le nom de la table de destination. Par exemple, pour la table ProductCategory appartenant au schéma Production sur l'Abonné, le paramètre serait MCALL sp_MSupd_ProductionProductCategory. Dans le cas d'un article dans une topologie de réplication d'homologue à homologue, le paramètre _table est ajouté avec une valeur GUID. La spécification d'une procédure stockée créée par l'utilisateur n'est pas autorisée pour mettre à jour les Abonnés.

    SCALL sp_MSupd_table (default)

    ou

    SCALL custom_stored_procedure_name

    Appelle une procédure stockée utilisant des paramètres de type SCALL. Pour recourir à cette méthode de réplication, utilisez schema_option pour spécifier la création automatique de la procédure stockée, ou créez la procédure stockée spécifiée dans la base de données de destination de chaque abonné de l'article. custom_stored_procedure est le nom d'une procédure stockée créée par l'utilisateur. sp_MSupd_table contient le nom de la table de destination utilisé dans la partie _table du paramètre. Lorsque destination_owner est spécifié, il est ajouté devant le nom de la table de destination. Par exemple, pour la table ProductCategory appartenant au schéma Production sur l'Abonné, le paramètre serait SCALL sp_MSupd_ProductionProductCategory. Dans le cas d'un article dans une topologie de réplication d'homologue à homologue, le paramètre _table est ajouté avec une valeur GUID. La spécification d'une procédure stockée créée par l'utilisateur n'est pas autorisée pour mettre à jour les Abonnés.

    XCALL sp_MSupd_table

    ou

    XCALL custom_stored_procedure_name

    Appelle une procédure stockée utilisant des paramètres de type XCALL. Pour recourir à cette méthode de réplication, utilisez schema_option pour spécifier la création automatique de la procédure stockée, ou créez la procédure stockée spécifiée dans la base de données de destination de chaque abonné de l'article. La spécification d'une procédure stockée créée par l'utilisateur n'est pas autorisée pour mettre à jour les Abonnés.

    SQL ou NULL

    Réplique une instruction UPDATE. L'instruction UPDATE est fournie pour toutes les valeurs des colonnes et toutes les valeurs de colonne clé primaire. La commande ci-dessous est répliquée lors des mises à jour :

    UPDATE <table name> SET c1 = c1value, SET c2 = c2value, SET cn = cnvalue WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue

    [!REMARQUE]

    Les syntaxes CALL, MCALL, SCALL et XCALL déterminent la quantité de données diffusée à l'abonné. La syntaxe CALL transmet toutes les valeurs de toutes les colonnes insérées et supprimées. La syntaxe SCALL transmet uniquement les valeurs des colonnes affectées. La syntaxe XCALL transmet les valeurs de toutes les colonnes, modifiées ou non, y compris leurs valeurs précédentes. Pour plus d'informations, consultez Spécifier le mode de propagation des modifications des articles transactionnels.

  • [ @creation_script =] 'creation_script'
    Est le chemin d'accès et le 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.

  • [ @description = ] 'description'
    Entrée descriptive de l'article. description est de type nvarchar(255), avec NULL comme valeur par défaut.

  • [ @pre_creation_cmd =] 'pre_creation_cmd'
    Indique l'action que doit entreprendre le système s'il détecte un objet existant de même nom sur l'abonné lors de l'application de l'instantané pour cet article. pre_creation_cmd est de type nvarchar(10) et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    aucun

    N'utilise pas de commande.

    supprimer

    Supprime les données de la table de destination avant d'appliquer l'instantané. Lorsque l'article est filtré horizontalement, seules les données qui se trouvent dans les colonnes spécifiées par la clause filter sont supprimées. Non pris en charge pour les serveurs de publication Oracle lorsqu'un filtre horizontal est défini.

    drop (valeur par défaut)

    Supprime la table de destination.

    truncate

    Tronque la table de destination. N'est pas valide pour les abonnés ODBC ou OLE DB.

  • [ @filter_clause=] 'filter_clause'
    Clause de restriction (WHERE) qui définit un filtre horizontal. Quand vous entrez la clause de restriction, omettez le mot clé WHERE. filter_clause est de type ntext, avec NULL comme valeur par défaut. Pour plus d'informations, consultez Filtrer des données publiées.

  • [ @schema_option =] schema_option
    Masque de bits de l'option de génération de schéma pour l'article donné. schema_option est binary(8) et peut être le produit | (opérateur OR au niveau du bit) d'une ou plusieurs valeurs.

    [!REMARQUE]

    Si la valeur est NULL, le système génère automatiquement une option de schéma valide pour l'article en fonction des autres propriétés de l'article. Le tableau Option de schéma par défaut proposé dans la section Notes détermine la valeur qui sera choisie en fonction de la combinaison type d'article/type de réplication.

    Valeur

    Description

    0x00

    Désactive la génération de scripts par l'Agent d'instantané et utilise creation_script.

    0x01

    Génère le script de création d'objet (CREATE TABLE, CREATE PROCEDURE, etc.). Cette valeur est la valeur par défaut pour les articles de procédure stockée.

    0x02

    Génère les procédures stockées qui propagent les modifications pour l'article, si elles sont définies.

    0x04

    Les colonnes d'identité font l'objet d'un script utilisant la propriété IDENTITY.

    0x08

    Réplique les colonnes timestamp. Si elles ne sont pas définies, les colonnes timestamp sont répliquées comme binary.

    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 uniques 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. Non pris en charge pour les serveurs de publication Oracle.

    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 uniques sont générés s'ils sont déjà définis sur une table publiée.

    0x80

    Réplique les contraintes de clé primaire. 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. Non pris en charge pour les serveurs de publication Oracle.

    0x200

    Réplique les contraintes de clés étrangères. Si la table référencée ne fait pas partie d'une publication, aucune contrainte de clé étrangère appliquée à une table publiée n'est répliquée. Non pris en charge pour les serveurs de publication Oracle.

    0x400

    Réplique les contraintes de vérification. Non pris en charge pour les serveurs de publication Oracle.

    0x800

    Réplique les valeurs par défaut. Non pris en charge pour les serveurs de publication Oracle.

    0x1000

    Réplique le classement au niveau des colonnes.

    [!REMARQUE]

    Cette option doit être définie pour les serveurs de publication Oracle afin d'activer les comparaisons qui respectent la casse.

    0x2000

    Réplique les propriétés étendues associées à l'objet source de l'article publié. Non pris en charge pour les serveurs de publication Oracle.

    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 SQL Server 2005.

    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

    Liaisons par défaut

    0x800000

    Liaisons de règle

    0x1000000

    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)) introduits dans SQL Server 2005 en types de données pris en charge dans SQL Server 2000.

    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) introduits dans SQL Server 2008 en types de données pris en charge dans les versions antérieures de SQL Server.

    0x400000000

    Réplique l'option de compression pour les données et les index. Pour plus d'informations, consultez Compression de données.

    0x800000000

    Définissez cette option pour stocker les données FILESTREAM dans leur propre groupe de fichiers sur l'Abonné. Si cette option n'est pas définie, les données FILESTREAM sont stockées 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écuter des scripts avant et après l'application de l'instantané.

    Consultez l'option connexe 0x100000000.

    0x1000000000

    Convertit les types définis par l'utilisateur (UDT) du common language runtime (CLR) qui dépassent 8 000 octets en type 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 Créer des 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.

    0x20000000000

    Réplique l'attribut SPARSE pour les colonnes. Pour plus d'informations sur cet attribut, consultez Utiliser des colonnes éparses.

    NULL

    La réplication définit automatiquement schema_option à une valeur par défaut qui dépend des propriétés d'autres articles. Le tableau « Options de schéma par défaut » de la section Notes montre les options de schéma par défaut en fonction du type d'article et du type de réplication.

    La valeur par défaut des publications non SQL Server est 0x050D3.

    Toutes les valeurs schema_option ne sont pas valides pour chaque type de réplication et d'article. Le tableau Options de schéma valides proposé dans la section Notes détermine les options de schéma valides qu'il est possible de sélectionner en fonction de la combinaison type d'article/type de réplication.

  • [ @destination_owner =] 'destination_owner'
    Nom du propriétaire de l'objet de destination. destination_owner est de type sysname, avec NULL comme valeur par défaut. Lorsque destination_owner n'est pas spécifié, le propriétaire est spécifié automatiquement selon les règles suivantes :

    Condition

    Propriétaire de l'objet de destination

    La publication utilise la copie en bloc en mode natif pour générer l'instantané initial, qui prend uniquement en charge des Abonnés SQL Server.

    Prend par défaut la valeur source_owner.

    Publié à partir d'un serveur de publication non SQL Server.

    Devient par défaut propriétaire de la base de données de destination.

    La publication utilise la copie en bloc en mode caractère pour générer l'instantané initial, qui prend en charge des Abonnés non SQL Server.

    Non assigné.

    Pour prendre en charge des Abonnés non SQL Server, destination_owner doit avoir la valeur NULL.

  • [ @status=] status
    Spécifie si l'article est actif et fournit des options supplémentaires pour définir la façon dont les modifications sont propagées. status est tinyint et peut être le produit | (opérateur OR au niveau du bit) d'une ou plusieurs valeurs.

    Valeur

    Description

    1

    Article actif

    8

    Inclut le nom de colonne dans les instructions INSERT.

    16 (valeur par défaut)

    Utilise des instructions paramétrables.

    24

    Inclut le nom de colonne dans les instructions INSERT et utilise des instructions paramétrables.

    64

    Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

    Par exemple, un article actif utilisant des instructions paramétrables posséderait la valeur 17 dans cette colonne. La valeur 0 signifie que l'article est inactif et qu'aucune propriété supplémentaire n'est définie.

  • [ @source_owner =] 'source_owner'
    Nom du propriétaire de l'objet source. source_owner est de type sysname, avec NULL comme valeur par défaut. Pour les serveurs de publication Oracle, le paramètre source_owner doit être spécifié.

  • [ @sync_object_owner =] 'sync_object_owner'
    Nom du propriétaire de la vue qui définit l'article publié. sync_object_owner est de type sysname, avec NULL comme valeur par défaut.

  • [ @filter_owner =] 'filter_owner'
    Propriétaire du filtre. filter_owner est de type sysname, avec NULL comme valeur par défaut.

  • [ @source_object=] 'source_object'
    Est l'objet de base de données à publier. source_object est de type sysname, avec NULL comme valeur par défaut. Si source_table a la valeur NULL, source_object ne peut pas avoir la valeur NULL.source_object doit être utilisé à la place de source_table. Pour plus d'informations sur les types d'objets qui peuvent être publiés en utilisant une réplication d'instantané ou une réplication transactionnelle, consultez Publier des données et des objets de base de données.

  • [ @artid = ] article_ID OUTPUT
    ID d'article du nouvel article. article_ID est int avec NULL comme valeur par défaut ; il s'agit d'un paramètre OUTPUT.

  • [ @auto_identity_range = ] 'auto_identity_range'
    Active et désactive la gestion automatique des plages d'identité sur une publication lorsqu'elle est créée. auto_identity_range est de type nvarchar(5) et peut prendre l'une des valeurs suivantes :

    Valeur

    Description

    true

    Active la gestion automatique des plages d'identité

    false

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

    NULL (par défaut)

    La gestion automatique des plages d'identité est définie par identityrangemanagementoption.

    [!REMARQUE]

    auto_identity_range est déconseillé 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épliquer des colonnes d'identité.

  • [ @pub_identity_range = ] pub_identity_range
    Contrôle la taille de la plage sur le serveur de publication si le paramètre identityrangemanagementoption de l'article a la valeur auto ou si le paramètre auto_identity_range a la valeur true. pub_identity_range est de type bigint, avec NULL comme valeur par défaut. Non pris en charge pour les serveurs de publication Oracle.

  • [ @identity_range = ] identity_range
    Contrôle la taille de la plage sur l'abonné si le paramètre identityrangemanagementoption de l'article a la valeur auto ou si le paramètre auto_identity_range a la valeur true. identity_range est de type bigint, avec NULL comme valeur par défaut. Utilisé lorsque auto_identity_range prend la valeur true. Non pris en charge pour les serveurs de publication Oracle.

  • [ @threshold = ] threshold
    Valeur de pourcentage qui contrôle le moment où l'Agent de distribution affecte une nouvelle plage d'identité. Lorsque le pourcentage de valeurs spécifié dans threshold est utilisé, l'Agent de distribution crée une nouvelle plage d'identité. threshold est de type bigint, avec NULL comme valeur par défaut. Utilisé lorsque identityrangemanagementoption est défini à auto ou que auto_identity_range est défini à true. Non pris en charge pour les serveurs de publication Oracle.

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Signale que l'action entreprise par cette procédure stockée peut invalider un instantané existant. force_invalidate_snapshotest de 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 requiert un nouvel instantané, un message d'erreur est généré 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 des abonnements nécessitant un nouvel instantané, cette valeur permet de marquer l'instantané existant comme obsolète et de générer un nouvel instantané.

  • [ @use_default_datatypes = ] use_default_datatypes
    Indique si les mappages de type de données de colonne par défaut sont utilisés lors de la publication d'un article à partir d'un serveur de publication Oracle. use_default_datatypes est de type bit, avec 1 comme valeur par défaut.

    1 = les mappages des types de données de colonne par défaut sont utilisés. Les mappages de type de données de colonne par défaut peuvent être affichés en exécutant la procédure sp_getdefaultdatatypemapping.

    0 = les mappages de colonne d'article personnalisé sont définis, et donc sp_articleview n'est pas appelé par la procédure sp_addarticle.

    Lorsque use_default_datatypes est défini à 0, vous devez exécuter sp_changearticlecolumndatatype une fois pour chaque mappage de colonne modifié par rapport à la valeur par défaut. Une fois tous les mappages de colonne personnalisés définis, vous devez exécuter sp_articleview.

    [!REMARQUE]

    Ce paramètre ne doit être utilisé que pour les serveurs de publication Oracle. La définition de use_default_datatypes à 0 pour un serveur de publication SQL Server génère une erreur.

  • [ @identityrangemanagementoption = ] identityrangemanagementoption
    Spécifie la façon dont la gestion des plages d'identité est gérée pour l'article. identityrangemanagementoption est de type nvarchar(10) et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    none

    La réplication n'explicite pas la gestion des plages d'identité. Cette option est recommandée uniquement pour la compatibilité ascendante avec des versions antérieures de SQL Server. Non autorisé pour la réplication d'homologue.

    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 à none lorsque la valeur de auto_identity_range n'est pas true. Est défini par défaut à manual dans une topologie d'homologue à homologue (auto_identity_range est ignoré).

    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épliquer des colonnes d'identité.

  • [ @publisher = ] 'publisher'
    Spécifie un serveur de publication non SQL Server. publisher est de type sysname, avec NULL comme valeur par défaut.

    [!REMARQUE]

    publisher ne doit pas être utilisé lors de l'ajout d'un article à un serveur de publication SQL Server.

  • [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot'
    Indique si les déclencheurs de l'utilisateur répliqués sont exécutés lorsque l'instantané initial est appliqué. fire_triggers_on_snapshot est de type nvarchar(5), avec FALSE comme valeur par défaut. true signifie que les déclencheurs utilisateur sur une table répliquée sont exécutés lorsque l'instantané est appliqué. Pour que les déclencheurs soient répliqués, la valeur de masque de bits de schema_option doit inclure la valeur 0x100.

Valeurs des codes de retour

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

Notes

La procédure sp_addarticle est utilisée dans une réplication d'instantané ou une réplication transactionnelle.

Par défaut, la réplication ne publie aucune colonne dans la table source lorsque le type de données de colonne n'est pas pris en charge par la réplication. Si vous devez publier une colonne non prise en charge, vous devez exécuter sp_articlecolumn pour ajouter la colonne.

Lors de l'ajout d'un article à une publication qui prend en charge la réplication transactionnelle d'homologue à homologue, les restrictions suivantes s'appliquent :

  • Les instructions paramétrables doivent être spécifiées pour tous les articles logbased. Vous devez inclure 16 dans la valeur status.

  • Le nom et le propriétaire de la table de destination doivent correspondre à la table source.

  • Il est impossible de filtrer l'article horizontalement ou verticalement.

  • La gestion automatique des plages d'identité n'est pas prise en charge. Vous devez spécifier une valeur manuelle pour identityrangemanagementoption.

  • Si la table inclut une colonne timestamp, vous devez inclure 0x08 dans schema_option pour répliquer la colonne en tant que timestamp.

  • Vous ne pouvez pas spécifier la valeur SQL pour ins_cmd, upd_cmd et del_cmd.

Pour plus d'informations, consultez Réplication transactionnelle d'égal à égal.

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 dépendant d'une table, vous devez également publier la table en question.

Si vertical_partition prend la valeur true, sp_addarticle diffère la création de la vue jusqu'à l'appel de sp_articleview (après que la dernière procédure sp_articlecolumn a été ajoutée).

Si la publication autorise la mise à jour des abonnements et si la table publiée ne contient pas de colonne uniqueidentifier, la procédure sp_addarticle ajoute automatiquement une colonne uniqueidentifier à la table.

Lors de la réplication vers un abonné qui n'est pas une instance de SQL Server (réplication hétérogène), seules les instructions Transact-SQL sont prises en charge pour les commandes INSERT, UPDATE et DELETE.

Lorsque l'Agent de lecture du journal s'exécute, l'ajout d'un article à une publication d'égal à égal peut provoquer un interblocage entre l'Agent de lecture du journal et le processus qui ajoute l'article. Pour éviter ce problème, avant d'ajouter un article à une publication d'égal à égal, utilisez le moniteur de réplication afin d'arrêter l'Agent de lecture du journal sur le nœud où vous ajoutez l'article. Redémarrez l'Agent de lecture du journal après l'ajout de l'article.

En définissant @del\_cmd = 'NONE' ou @ins\_cmd = 'NONE', la propagation des commandes UPDATE peut également être affectée, et les commandes peuvent ne pas être envoyées lorsqu'une mise à jour associée est effectuée. (Une mise à jour associée est un type d'instruction UPDATE du serveur de publication qui réplique comme une paire de DELETE/INSERT sur l'abonné.)

Options de schéma par défaut

Ce tableau décrit la valeur par défaut définie par la réplication si schema_options n'est pas spécifié par l'utilisateur, dans les cas où cette valeur dépend du type de réplication (affichée dans la partie supérieure) et du type d'article (en bas de la première colonne).

Type de l'article

Type de réplication

 

 

Transactionnelle

Instantané

aggregate schema only

0x01

0x01

func schema only

0x01

0x01

indexed view schema only

0x01

0x01

indexed view logbased

0x30F3

0x3071

indexed view logbase manualboth

0x30F3

0x3071

indexed view logbased manualfilter

0x30F3

0x3071

indexed view logbased manualview

0x30F3

0x3071

logbased

0x30F3

0x3071

logbased manualfilter

0x30F3

0x3071

logbased manualview

0x30F3

0x3071

proc exec

0x01

0x01

proc schema only

0x01

0x01

serializable proc exec

0x01

0x01

view schema only

0x01

0x01

[!REMARQUE]

Si une publication est activée pour la mise à jour en attente, une valeur schema_option de 0x80 est ajoutée à la valeur par défaut affichée dans le tableau. La valeur par défaut de schema_option pour une publication non-SQL Server est de 0x050D3.

Options de schéma valides

Ce tableau décrit les valeurs autorisées de schema_option en fonction du type de réplication (dans la partie supérieure) et du type d'article (dans la première colonne).

Type de l'article

Type de réplication

 

 

Transactionnelle

Instantané

logbased

Toutes les options

Toutes les options sauf 0x02

logbased manualfilter

Toutes les options

Toutes les options sauf 0x02

logbased manualview

Toutes les options

Toutes les options sauf 0x02

indexed view logbased

Toutes les options

Toutes les options sauf 0x02

indexed view logbased manualfilter

Toutes les options

Toutes les options sauf 0x02

indexed view logbased manualview

Toutes les options

Toutes les options sauf 0x02

indexed view logbase manualboth

Toutes les options

Toutes les options sauf 0x02

proc exec

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000

serializable proc exec

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000

proc schema only

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000

view schema only

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 et 0x80000000

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 et 0x80000000

func schema only

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000

indexed view schema only

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 et 0x80000000

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 et 0x80000000

[!REMARQUE]

Dans le cas des publications avec mise à jour en attente, les valeurs schema_option 0x8000 et 0x80 doivent être activées. Les valeurs schema_option prises en charge pour les publications non SQL Server sont les suivantes : 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000, 0x4000 et 0X8000.

Exemple

DECLARE @publication    AS sysname;
DECLARE @table AS sysname;
DECLARE @filterclause AS nvarchar(500);
DECLARE @filtername AS nvarchar(386);
DECLARE @schemaowner AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @table = N'Product';
SET @filterclause = N'[DiscontinuedDate] IS NULL'; 
SET @filtername = N'filter_out_discontinued';
SET @schemaowner = N'Production';

-- Add a horizontally and vertically filtered article for the Product table.
-- Manually set @schema_option to ensure that the Production schema 
-- is generated at the Subscriber (0x8000000).
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @table, 
    @source_object = @table,
    @source_owner = @schemaowner, 
    @schema_option = 0x80030F3,
    @vertical_partition = N'true', 
    @type = N'logbased',
    @filter_clause = @filterclause;

-- (Optional) Manually call the stored procedure to create the 
-- horizontal filtering stored procedure. Since the type is 
-- 'logbased', this stored procedures is executed automatically.
EXEC sp_articlefilter 
    @publication = @publication, 
    @article = @table, 
    @filter_clause = @filterclause, 
    @filter_name = @filtername;

-- Add all columns to the article.
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table;

-- Remove the DaysToManufacture column from the article
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table, 
    @column = N'DaysToManufacture', 
    @operation = N'drop';

-- (Optional) Manually call the stored procedure to create the 
-- vertical filtering view. Since the type is 'logbased', 
-- this stored procedures is executed automatically.
EXEC sp_articleview 
    @publication = @publication, 
    @article = @table,
    @filter_clause = @filterclause;
GO

Autorisations

Seuls les membres appartenant au rôle de serveur fixe sysadmin ou au rôle de base de données fixe db_owner peuvent exécuter sp_addmergearticle.

Voir aussi

Référence

sp_articlecolumn (Transact-SQL)

sp_articlefilter (Transact-SQL)

sp_articleview (Transact-SQL)

sp_changearticle (Transact-SQL)

sp_droparticle (Transact-SQL)

sp_helparticle (Transact-SQL)

sp_helparticlecolumns (Transact-SQL)

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

Concepts

Définir un article

Publier des données et des objets de base de données