Partager via


sp_addarticle (Transact-SQL)

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

Icône Lien de rubriqueConventions de la syntaxe de 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. L'argument publication est du type sysname, sans valeur par défaut.

  • [ @article = ] 'article'
    Nom de l'article. Le nom doit être unique dans la publication. L'argument article est du type sysname, sans valeur par défaut.

  • [ @source_table = ] 'source_table'
    Ce paramètre est désormais déconseillé ; utilisez plutôt source_object.

    Ce paramètre est uniquement pris en charge pour assurer la compatibilité descendante avec SQL Server 6.5. 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 différent de source_tableou de la procédure stockée. destination_table est du type sysname, avec NULL comme valeur par défaut, ce qui signifie que source_table est égale à destination_table*.*

  • [ @vertical_partition = ] 'vertical_partition'
    Active ou désactive le filtrage de colonne sur une article de table. L'argument vertical_partition est du 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 de clé unique. Les colonnes sont ajoutées avec la procédure sp_articlecolumn.

  • [ @type = ] 'type'
    Type de l'article. L'argument type est du 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 basé 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 basé 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. La prise en charge n'est pas assurée pour les serveurs de publication Oracle.

    indexed view logbased manualfilter

    Article de vue indexée basé 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. La prise en charge n'est pas assurée pour les serveurs de publication Oracle.

    indexed view logbased manualview

    Article de vue indexée basé 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 basé sur le 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 basé sur le 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 basé sur le 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.

    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.

    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 du type nvarchar(386), avec NULL comme valeur par défaut. Les procédures stockées sp_articleview et sp_articlefilter doivent être exécutées 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. L'argument sync_object est du 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é lors de la réplication d'insertions pour cet article. L'argument ins_cmd est du type nvarchar(255) et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    NONE

    Aucune action n'est effectuée.

    CALL sp_MSins_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 utiliser cette méthode de réplication, spécifiez la création automatique de la procédure stockée avec schema_option, 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. La procédure stockée sp_MSins_table contient le nom de la table de destination à la place de 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écification du mode de propagation des modifications des articles transactionnels.

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

    Valeur

    Description

    NONE

    Aucune action n'est effectuée.

    CALLsp_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 utiliser cette méthode de réplication, spécifiez la création automatique de la procédure stockée avec schema_option, 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. La procédure stockée sp_MSdel_table contient le nom de la table de destination à la place de 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 de clés primaires 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écification du mode de propagation des modifications des articles transactionnels.

  • [ @upd_cmd =] 'upd_cmd'
    Type de commande de réplication utilisé lors de la réplication de mises à jour pour cet article. L'argument upd_cmd est du 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 utiliser cette méthode de réplication, spécifiez la création automatique de la procédure stockée avec schema_option, 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. La procédure stockée sp_MSupd_table contient le nom de la table de destination à la place de 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 (valeur par défaut)

    - ou -

    SCALL custom_stored_procedure_name

    Appelle une procédure stockée utilisant des paramètres de type SCALL. Pour utiliser cette méthode de réplication, spécifiez la création automatique de la procédure stockée avec schema_option, 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. La procédure stockée sp_MSupd_table contient le nom de la table de destination à la place de 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 de 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

    Notes

    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écification du mode de propagation des modifications des articles transactionnels.

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

  • [ @description =] 'description'
    Entrée descriptive pour l'article. L'argument description est du 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 du même nom sur l'abonné lors de l'application de l'instantané pour cet article. pre_creation_cmd est du type nvarchar(10), et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    none

    N'utilise pas de commande.

    delete

    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 par 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. Lorsque vous entrez la clause de restriction, omettez le mot clé WHERE. L'argument filter_clause est du type ntext, avec NULL comme valeur par défaut. Pour plus d'informations, consultez Filtrage 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 du type binary(8), et peut être le produit | (OR au niveau du bit) d'une ou plusieurs de ces valeurs :

    Notes

    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'objets (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 de 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, toutes les contraintes de clés étrangères appliquées à une table publiée ne sont pas répliquées. 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.

    RemarqueRemarque
    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 de sorte qu'elles ne soient pas appliquées au cours de la synchronisation.

    0x20000

    Réplique les contraintes FOREIGN KEY en tant que NOT FOR REPLICATION afin que les contraintes ne soient pas appliquées durant la synchronisation.

    0x40000

    Réplique les groupes de fichiers associés à une table ou un index partitionné.

    0x80000

    Réplique le schéma de partition d'une table partitionnée.

    0x100000

    Réplique le schéma de partition d'un index partitionné.

    0x200000

    Réplique 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. Pour plus d'informations sur la façon dont ces types sont mappés, consultez la section « Mappage des nouveaux types de données pour les versions antérieures » dans Utilisation de plusieurs versions de SQL Server dans une topologie de réplication.

    0x40000000

    Réplique les autorisations.

    0x80000000

    Tente de supprimer les dépendances envers tous les objets qui ne font pas partie de la publication.

    0x100000000

    Utilisez cette option pour répliquer l'attribut FILESTREAM s'il est spécifié sur les colonnes varbinary(max). Ne spécifiez pas cette option si vous répliquez des tables sur des Abonnés SQL Server 2005. La réplication de tables qui possèdent des colonnes FILESTREAM sur des Abonnés SQL Server 2000 n'est pas prise en charge, quelle que soit la façon dont cette option de schéma est définie. 

    Consultez l'option connexe 0x800000000.

    0x200000000

    Convertit les types de données de date et d'heure (date, time, datetimeoffset et datetime2) introduits dans SQL Server 2008 en types de données pris en charge dans les versions antérieures de SQL Server. Pour plus d'informations sur la façon dont ces types sont mappés, consultez la section « Mappage des nouveaux types de données pour les versions antérieures » dans Utilisation de plusieurs versions de SQL Server dans une topologie de réplication.

    0x400000000

    Réplique l'option de compression pour les données et les index. Pour plus d'informations, consultez Création de tables et d'index compressés.

    0x800000000

    Définissez cette option pour stocker les données FILESTREAM dans leur propre groupe de fichiers sur l'Abonné. Si cette option n'est pas définie, les données FILESTREAM sont stockées dans le groupe de fichiers par défaut. La réplication ne crée pas de groupes de fichiers ; par conséquent, si vous définissez cette option, vous devez créer le groupe de fichiers avant d'appliquer l'instantané à l'Abonné. Pour plus d'informations sur la création d'objets avant d'appliquer l'instantané, consultez Exécution de scripts avant et après l'application de la capture instantanée.

    Consultez l'option connexe 0x100000000.

    0x1000000000

    Convertit les types définis par l'utilisateur (UDT) du common language runtime (CLR) 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 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.

    0x20000000000

    Réplique l'attribut SPARSE pour les colonnes. Pour plus d'informations sur cet attribut, consultez Utilisation de colonnes fragmentées.

    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. L'argument destination_owner est du 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 propose des options supplémentaires pour propager les modifications. status est du type tinyint et peut être le produit | (OR au niveau du bit) d'une ou plusieurs de ces 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étrées.

    24

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

    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étrées aurait la valeur 17 dans cette colonne. La valeur 0 signifie que l'article est inactif et qu'aucune autre propriété n'est définie.

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

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

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

  • [ @source_object =] 'source_object'
    Objet de base de données à publier. source_object est du 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 Publication de données et d'objets de base de données.

  • [ @artid = ] article_ID OUTPUT
    ID d'article du nouvel article. L'argument article_ID est du type int avec NULL comme valeur par défaut et c'est un paramètre OUTPUT.

  • [ @auto_identity_range = ] 'auto_identity_range'
    Active et désactive la gestion automatique des plages d'identité sur une publication au moment de sa création. auto_identity_range est du 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 (valeur par défaut)

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

    Notes

    auto_identity_range est déconseillé et n'est fourni qu'à des fins de compatibilité descendante. Vous devez utiliser identityrangemanagementoption afin de spécifier les options de gestion des plages d'identité. Pour plus d'informations, consultez Réplication de colonnes d'identité.

  • [ @pub_identity_range = ] pub_identity_range
    Contrôle la taille de la plage sur le serveur de publication si l'option identityrangemanagementoption est définie à auto ou auto_identity_range est définie à true. pub_identity_range est du type bigint, avec NULL comme valeur par défaut. Cette valeur n'est pas prise en charge pour les serveurs de publication Oracle.

  • [ @identity_range = ] identity_range
    Contrôle la taille de la plage sur l'Abonné si l'option identityrangemanagementoption est définie à auto ou auto_identity_range est définie à true. identity_range est du 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 des valeurs spécifiées dans threshold est utilisé, l'Agent de distribution crée une nouvelle plage d'identité. L'argument threshold est du 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. Cette valeur n'est pas prise 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_snapshot est du type bit, avec 0 comme valeur par défaut.

    0 indique que l'ajout d'un article ne rend pas 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 du 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.

    Notes

    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 le mode de gestion des plages d'identité pour l'article. identityrangemanagementoption est du type nvarchar(10) et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    none

    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 (valeur 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éplication de colonnes d'identité.

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

    Notes

    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 utilisateur répliqués sont exécutés lorsque l'instantané initial est appliqué. fire_triggers_on_snapshot est du type nvarchar(5), avec FALSE comme valeur par défaut. La valeur 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 retournés

0 (succès) 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. Pour plus d'informations, consultez Considérations communes à tous les types de réplication.

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étrées 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 qui dépend d'une table, vous devez publier la table également.

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 est en cours d'exécution, 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'jouter un article à une publication d'égal à égal, utilisez le Moniteur de réplication pour 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 avoir ajouté l'article.

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 d'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

Notes

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

Notes

Dans le cas des publications avec mise à jour en attente, les valeurs schema_option0x8000 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.