Partage via


sp_addarticle (Transact-SQL)

S’applique à : SQL Server Azure SQL Managed Instance

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

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_addarticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    [ , [ @source_table = ] N'source_table' ]
    [ , [ @destination_table = ] N'destination_table' ]
    [ , [ @vertical_partition = ] N'vertical_partition' ]
    [ , [ @type = ] N'type' ]
    [ , [ @filter = ] N'filter' ]
    [ , [ @sync_object = ] N'sync_object' ]
    [ , [ @ins_cmd = ] N'ins_cmd' ]
    [ , [ @del_cmd = ] N'del_cmd' ]
    [ , [ @upd_cmd = ] N'upd_cmd' ]
    [ , [ @creation_script = ] N'creation_script' ]
    [ , [ @description = ] N'description' ]
    [ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
    [ , [ @filter_clause = ] N'filter_clause' ]
    [ , [ @schema_option = ] schema_option ]
    [ , [ @destination_owner = ] N'destination_owner' ]
    [ , [ @status = ] status ]
    [ , [ @source_owner = ] N'source_owner' ]
    [ , [ @sync_object_owner = ] N'sync_object_owner' ]
    [ , [ @filter_owner = ] N'filter_owner' ]
    [ , [ @source_object = ] N'source_object' ]
    [ , [ @artid = ] artid OUTPUT ]
    [ , [ @auto_identity_range = ] N'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 = ] N'identityrangemanagementoption' ]
    [ , [ @publisher = ] N'publisher' ]
    [ , [ @fire_triggers_on_snapshot = ] N'fire_triggers_on_snapshot' ]
[ ; ]

Arguments

[ @publication = ] N’publication'

Nom de la publication qui contient l’article. Le nom doit être unique dans la base de données. @publication est sysname, sans valeur par défaut.

[ @article = ] N’article'

Nom de l’article. Le nom doit être unique dans la publication. @article est sysname, sans valeur par défaut.

[ @source_table = ] N’source_table'

Ce paramètre a été déprécié ; utilisez @source_object à la place. @source_table est nvarchar(386), avec la valeur par défaut NULL. @source_table n’est pas pris en charge pour les serveurs de publication Oracle.

[ @destination_table = ] N’destination_table'

Nom de la table de destination (abonnement), s’il est différent de @source_table ou de la procédure stockée. @destination_table est sysname, avec la valeur par défaut NULL. Si la valeur est définie NULL, cela signifie que @source_table est égal à @destination_table.

[ @vertical_partition = ] N’vertical_partition'

Active ou désactive le filtrage de colonne sur un article de table. @vertical_partition est nchar(5), avec la valeur par défaut false.

  • false indique qu’il n’existe aucun filtrage vertical et publie toutes les colonnes.

  • true efface toutes les colonnes, à l’exception de la clé primaire déclarée, des colonnes nullables sans valeur par défaut et des colonnes clés uniques. Les colonnes sont ajoutées à l’aide de sp_articlecolumn.

[ @type = ] N’type'

Type d’article. @type est sysname, avec une valeur par défaut NULL, et peut être 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, la table de base n’a pas besoin d’être publiée 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 que vous spécifiiez les paramètres @sync_object et @filter . Pour ce type d’article, la table de base n’a pas besoin d’être publiée 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 que vous spécifiiez les paramètres @sync_object et @filter . Pour ce type d’article, la table de base n’a pas besoin d’être publiée 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 que vous spécifiiez le paramètre @sync_object . Pour ce type d’article, la table de base n’a pas besoin d’être publiée 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 que vous spécifiiez 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 que vous spécifiiez 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 que vous spécifiiez 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 sérialisable proc exec au lieu de proc exec. Pour plus d’informations, consultez la section « Types d’exécution de procédure stockée » dans la publication de l’exécution de procédure stockée 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 elle est exécutée dans le contexte d’une transaction sérialisable. Non pris en charge pour les serveurs de publication Oracle.

La procédure 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 = ] N’filter'

Procédure stockée (créée avec FOR REPLICATION) utilisée pour filtrer la table horizontalement. @filter est nvarchar(386), avec la valeur par défaut NULL. Vous devez exécuter sp_articleview et sp_articlefilter manuellement pour créer la procédure stockée d’affichage et de filtre. Si ce n’est pas NULLle cas, la procédure de filtre n’est pas créée (suppose que la procédure stockée est créée manuellement).

[ @sync_object = ] N’sync_object'

Nom de la table ou de la vue utilisée pour produire le fichier de données utilisé pour représenter l’instantané de cet article. @sync_object est nvarchar(386), avec la valeur par défaut NULL. Si NULL, sp_articleview est appelé pour créer automatiquement la vue utilisée pour générer le fichier de sortie. Cela se produit après l’ajout de colonnes avec sp_articlecolumn. Si ce n’est pas NULLle cas, une vue n’est pas créée (suppose que la vue est créée manuellement).

[ @ins_cmd = ] N’ins_cmd'

Type de commande de réplication utilisé lors de la réplication d’insertions pour cet article. @ins_cmd est nvarchar(255) et peut être 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, utilisez @schema_option pour spécifier la création automatique de la procédure stockée ou créer 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 à la place de la partie _table du paramètre. Lorsque @destination_owner est spécifié, il est ajouté au nom de la table de destination. Par exemple, pour la ProductCategory table appartenant au Production schéma sur l’Abonné, le paramètre est CALL sp_MSins_ProductionProductCategory. Pour un article dans une topologie de réplication d’égal à égal, <table> est ajouté avec une valeur GUID. La spécification <custom_stored_procedure> n’est pas prise en charge pour la mise à jour des abonnés.
SQL ou NULL Réplique une INSERT instruction. L’instruction INSERT fournit des valeurs pour toutes les 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 les articles transactionnels - Spécifier la façon dont les modifications sont propagées.

[ @del_cmd = ] N’del_cmd'

Type de commande de réplication utilisé lors de la réplication des suppressions pour cet article. @del_cmd est nvarchar(255) et peut être 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, utilisez @schema_option pour spécifier la création automatique de la procédure stockée ou créer 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 à la place de la partie _table du paramètre. Lorsque @destination_owner est spécifié, il est ajouté au nom de la table de destination. Par exemple, pour la ProductCategory table appartenant au Production schéma sur l’Abonné, le paramètre est CALL sp_MSdel_ProductionProductCategory. Pour un article dans une topologie de réplication d’égal à égal, <table> est ajouté avec une valeur GUID. La spécification <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 prenant XCALL des paramètres de style. Pour utiliser cette méthode de réplication, utilisez @schema_option pour spécifier la création automatique de la procédure stockée ou créer 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 la mise à jour des abonnés.
SQL ou NULL Réplique une DELETE instruction. L’instruction DELETE est fournie toutes les valeurs de colonne clé primaire. 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 les articles transactionnels - Spécifier la façon dont les modifications sont propagées.

[ @upd_cmd = ] N’upd_cmd'

Type de commande de réplication utilisé lors de la réplication des mises à jour pour cet article. @upd_cmd est nvarchar(255) et peut être 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 utiliser cette méthode de réplication, utilisez @schema_option pour spécifier la création automatique de la procédure stockée ou créer 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 prenant MCALL des paramètres de style. Pour utiliser cette méthode de réplication, utilisez @schema_option pour spécifier la création automatique de la procédure stockée ou créer 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 à la place de la <table> partie du paramètre. Lorsque @destination_owner est spécifié, il est ajouté au nom de la table de destination. Par exemple, pour la ProductCategory table appartenant au Production schéma sur l’Abonné, le paramètre est MCALL sp_MSupd_ProductionProductCategory. Pour un article dans une topologie de réplication d’égal à égal, <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 la mise à jour des abonnés.
SCALL sp_MSupd_<table> (valeur par défaut)

-ou-

SCALL <custom_stored_procedure_name>
Appelle une procédure stockée prenant SCALL des paramètres de style. Pour utiliser cette méthode de réplication, utilisez @schema_option pour spécifier la création automatique de la procédure stockée ou créer 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 à la place de la partie _table du paramètre. Lorsque @destination_owner est spécifié, il est ajouté au nom de la table de destination. Par exemple, pour la ProductCategory table appartenant au Production schéma sur l’Abonné, le paramètre est SCALL sp_MSupd_ProductionProductCategory. Pour obtenir un article dans une topologie de réplication d’égal à égal, _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 la mise à jour des abonnés.
XCALL sp_MSupd_<table>

-ou-

XCALL <custom_stored_procedure_name>
Appelle une procédure stockée prenant XCALL des paramètres de style. Pour utiliser cette méthode de réplication, utilisez @schema_option pour spécifier la création automatique de la procédure stockée ou créer 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 la mise à jour des abonnés.
SQL ou NULL Réplique une UPDATE instruction. L’instruction UPDATE est fournie sur toutes les valeurs de colonne et 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

Syntaxe pour CALL, MCALL, SCALL, et XCALL varient la quantité de données propagées à l’abonné. La CALL syntaxe transmet toutes les valeurs pour toutes les colonnes insérées et supprimées. La SCALL syntaxe transmet les valeurs uniquement pour les colonnes affectées. La XCALL syntaxe transmet des valeurs pour toutes les colonnes, qu’elles soient modifiées ou non, y compris la valeur précédente de la colonne. Pour plus d’informations, consultez les articles transactionnels - Spécifier la façon dont les modifications sont propagées.

[ @creation_script = ] N’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 nvarchar(255), avec la valeur par défaut NULL.

[ @description = ] N’description'

Entrée descriptive de l’article. @description est nvarchar(255), avec la valeur par défaut NULL.

[ @pre_creation_cmd = ] N’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 nvarchar(10) et peut être 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 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 = ] N’filter_clause'

Clause de restriction (WHERE) qui définit un filtre horizontal. Lorsque vous entrez la clause de restriction, omettez le mot clé WHERE. @filter_clause est nvarchar(max), avec la valeur par défaut NULL. 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 varbinary(8), avec une valeur par défaut NULL, et peut être le | (OR au niveau du bit) produit d’une ou plusieurs de ces valeurs :

Remarque

Si cette valeur est NULL, le système génère automatiquement une option de schéma valide pour l’article en fonction d’autres propriétés d’article. Les options de schéma par défaut affichent la valeur qui sera choisie en fonction de la combinaison du type d’article et du type de réplication.

Valeur Description
0x00 Désactive le script 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épliquer des colonnes d’horodatage . Si ce n’est pas le cas, les colonnes d’horodatage sont répliquées en tant que binaires.
0x10 Génère un index cluster correspondant. Même si cette option n’est pas définie, les index liés 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 1 Convertit les types de données définis par l'utilisateur (UDT) en types de données de base auprès de l'Abonné. Cette option ne peut pas être utilisée lorsqu’il existe une contrainte CHECK ou DEFAULT sur une colonne UDT, si une colonne UDT fait partie de la clé primaire ou si une colonne calculée fait référence à une colonne UDT.
0x40 Génère les index non-cluster correspondants. Même si cette option n’est pas définie, les index liés 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 liés à la contrainte sont également répliqués, même si les options 0x10 et 0x40 ne sont pas activées.
0x100 1 Réplique les déclencheurs utilisateur, si ceux-ci sont définis, sur un article de table.
0x200 1 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é étrangère sur une table publiée ne sont pas répliquées.
0x400 1 Réplique les contraintes de vérification.
0x800 1 Réplique les valeurs par défaut.
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 sensibles à la casse.
0x2000 1 Réplique les propriétés étendues associées à l'objet source de l'article publié.
0x4000 Réplique les contraintes UNIQUE. Tous les index liés à 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 (9.x).
0x10000 Réplique les contraintes CHECK comme NOT FOR REPLICATION afin que les contraintes ne soient pas appliquées pendant la synchronisation.
0x20000 Réplique les contraintes FOREIGN KEY comme NOT FOR REPLICATION afin que les contraintes ne soient pas appliquées pendant 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ègles.
0x1000000 Index de recherche en texte intégral.
0x2000000 Les collections de schémas 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 d’objet volumineux (nvarchar(max), varchar(max)et varbinary(max)) introduits dans SQL Server 2005 (9.x) en types de données pris en charge sur SQL Server 2000 (8.x).
0x40000000 Réplique les autorisations.
0x80000000 Tentez de supprimer des dépendances vers des objets qui ne font pas partie de la composition.
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 vers des abonnés SQL Server 2005 (9.x). La réplication de tables qui ont des colonnes FILESTREAM vers des abonnés SQL Server 2000 (8.x) n’est pas prise en charge, quelle que soit la façon dont cette option de schéma est définie.

Voir l’option associée 0x800000000.
0x200000000 Convertit les types de données de date et d’heure (date, heure, datetimeoffset et datetime2) introduits dans SQL Server 2008 (10.0.x) en types de données pris en charge sur 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 sur 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é sur 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é.

Voir l’option associée 0x100000000.
0x1000000000 Convertit les types définis par l’utilisateur (CLR) définis par l’utilisateur (CLR) dont la taille est supérieure à 8 000 octets en varbinary(max) afin que les colonnes de type UDT puissent être répliquées vers des Abonnés exécutant SQL Server 2005 (9.x).
0x2000000000 Convertit le type de données hierarchyid en varbinary(max) afin que les colonnes de type hierarchyid puissent être répliquées vers des Abonnés exécutant SQL Server 2005 (9.x). Pour plus d’informations sur l’utilisation de colonnes hierarchyid dans des tables répliquées, consultez hierarchyid.
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 varbinary(max) afin que les colonnes de ces types puissent être répliquées vers des Abonnés exécutant SQL Server 2005 (9.x).
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.
0x40000000000 Activez le script par l’agent d’instantané pour créer une table optimisée en mémoire sur l’abonné.
0x80000000000 Convertit l’index cluster en index non cluster pour les articles à mémoire optimisée.
0x400000000000 Réplique tous les index columnstore non cluster sur la ou les tables
0x800000000000 Réplique tous les index columnstore non cluster filtrés sur la ou les tables.
NULL La réplication définit automatiquement @schema_option sur une valeur par défaut, dont la valeur dépend d’autres propriétés d’article. 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 pour les publications non-SQL Server est 0x050D3.

1 Non pris en charge pour les serveurs de publication Oracle.

Toutes les valeurs @schema_option ne sont pas valides pour chaque type de réplication et de type d’article. Le tableau Options de schéma valides dans la section Remarques affiche les options de schéma valides qui peuvent être choisies en fonction de la combinaison du type d’article et du type de réplication.

[ @destination_owner = ] N’destination_owner'

Nom du propriétaire de l’objet de destination. @destination_owner est sysname, avec la valeur par défaut NULL. Lorsque @destination_owner n’est pas spécifié, le propriétaire est spécifié automatiquement en fonction des 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 les abonnés SQL Server. Correspond par défaut à la valeur de @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 les abonnés non-SQL Server. Non assigné.

Pour prendre en charge les abonnés non-SQL Server, @destination_owner doit être NULL.

[ @status = ] état

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 | (OR au niveau du bit) produit d’une ou plusieurs de ces valeurs.

Valeur Description
1 Article actif
8 Inclut le nom de colonne dans INSERT les instructions.
16 (valeur par défaut) Utilise des instructions paramétrables.
24 Inclut le nom de colonne dans INSERT les instructions 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 aurait une valeur dans 17 cette colonne. Valeur de 0 signifie que l’article est inactif et qu’aucune propriété supplémentaire n’est définie.

[ @source_owner = ] N’source_owner'

Propriétaire de l’objet source. @source_owner est sysname, avec la valeur par défaut NULL. @source_owner devez être spécifié pour les serveurs de publication Oracle.

[ @sync_object_owner = ] N’sync_object_owner'

Propriétaire de la vue qui définit l’article publié. @sync_object_owner est sysname, avec la valeur par défaut NULL.

[ @filter_owner = ] N’filter_owner'

Propriétaire du filtre. @filter_owner est sysname, avec la valeur par défaut NULL.

[ @source_object = ] N’source_object'

Objet de base de données à publier. @source_object est sysname, avec la valeur par défaut NULL. Si @source_table est NULL, @source_object ne peut pas être NULL. @source_object doit être utilisé au lieu de @source_table. Pour plus d’informations sur les types d’objets qui peuvent être publiés à l’aide d’une réplication d’instantané ou transactionnelle, consultez Publier des données et des objets de base de données.

[ @artid = ] artid OUTPUT

ID d’article du nouvel article. @artid est un paramètre OUTPUT de type int.

[ @auto_identity_range = ] N’auto_identity_range'

Active et désactive la gestion automatique des plages d’identités sur une publication au moment de sa création. @auto_identity_range est nvarchar(5) et peut être 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 des plages d’identités est définie par @identityrangemanagementoption.

Remarque

@auto_identity_range est déconseillée et est fournie uniquement pour la compatibilité descendante. Vous devez utiliser @identityrangemanagementoption pour spécifier des 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 plage sur le serveur de publication si l’article a @identityrangemanagementoption défini sur automatique ou @auto_identity_range défini sur true. @pub_identity_range est bigint, avec une valeur par défaut de NULL. @pub_identity_range n’est pas pris en charge pour les serveurs de publication Oracle.

[ @identity_range = ] identity_range

Contrôle la taille de plage sur l’Abonné si l’article a @identityrangemanagementoption défini sur automatique ou @auto_identity_range défini sur true. @identity_range est bigint, avec une valeur par défaut de NULL. Utilisé lorsque @auto_identity_range a la valeur true. @identity_range n’est pas pris en charge pour les serveurs de publication Oracle.

[ @threshold = ] seuil

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ées dans @threshold est utilisé, l’Agent de distribution crée une plage d’identités. @threshold est int, avec la valeur par défaut NULL. Utilisé lorsque @identityrangemanagementoption est défini sur automatique ou @auto_identity_range a la valeur true. @threshold n’est pas pris en charge pour les serveurs de publication Oracle.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Reconnaît que l’action effectuée par cette procédure stockée peut invalider un instantané existant. @force_invalidate_snapshot est bit, avec la valeur par défaut 0.

  • 0 spécifie que l’ajout d’un article n’entraîne pas l’échec de 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 spécifie que l’ajout d’un article peut rendre l’instantané non valide et, si des abonnements nécessitent un nouvel instantané, donnent l’autorisation à l’instantané existant d’être marqué comme obsolète et qu’un nouvel instantané doit être généré.

[ @use_default_datatypes = ] use_default_datatypes

Indique si les mappages de types 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 bit, avec la valeur par défaut 1.

  • 1 = les mappages de colonnes d’article par défaut sont utilisés. Les mappages de types de données par défaut peuvent être affichés en exécutant sp_getdefaultdatatypemapping.

  • 0 = les mappages de colonnes d’articles personnalisés sont définis et, par conséquent , sp_articleview n’est pas appelé par sp_addarticle.

Lorsque @use_default_datatypes est défini 0sur , vous devez exécuter sp_changearticlecolumndatatype une fois pour chaque mappage de colonnes modifié par défaut. Une fois que tous les mappages de colonnes personnalisés ont été 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 pour 0 un serveur de publication SQL Server génère une erreur.

[ @identityrangemanagementoption = ] N’identityrangemanagementoption'

Spécifie la façon dont la gestion des plages d'identité est gérée pour l'article. @identityrangemanagementoption est nvarchar(10) et peut être 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é descendante avec les 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) none Par défaut, lorsque la valeur de @auto_identity_range n’est pas true. manual Valeur par défaut dans une topologie d’égal à égal (@auto_identity_range est ignorée).

Pour la compatibilité descendante, lorsque la valeur de @identityrangemanagementoption est NULL, la valeur de @auto_identity_range est vérifiée. Toutefois, 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 = ] N’publisher'

Spécifie un serveur de publication non-SQL Server. @publisher est sysname, avec la valeur par défaut NULL.

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

[ @fire_triggers_on_snapshot = ] N’fire_triggers_on_snapshot'

Si des déclencheurs utilisateur répliqués sont exécutés lorsque l’instantané initial est appliqué. @fire_triggers_on_snapshot est nvarchar(5), avec la valeur par défaut false. 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) or 1 (échec).

Notes

sp_addarticle est utilisé dans la réplication d’instantanés ou la 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 telle colonne, 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.

  • L’article ne peut pas être filtré horizontalement ou verticalement.

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

  • Si une colonne timestamp existe dans la table, vous devez inclure 0x08 dans @schema_option pour répliquer la colonne en tant qu’horodatage.

  • Impossible de SQL spécifier une valeur pour @ins_cmd, @upd_cmd et @del_cmd.

Pour plus d’informations, consultez Peer-to-Peer - Réplication transactionnelle.

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 a la valeur true, sp_addarticle reporte la création de la vue jusqu’à ce que sp_articleview soit appelée (après l’ajout du dernier sp_articlecolumn ).

Si la publication autorise la mise à jour des abonnements et que la table publiée n’a pas de colonne uniqueidentifier , 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 INSERT, UPDATEet DELETE les commandes.

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 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 l'ajout de l'article.

Lorsque vous définissez @del_cmd à NONE ou @ins_cmd NONEà , la propagation des UPDATE commandes peut également être affectée en n’envoyant pas ces commandes lorsqu’une mise à jour limitée se produit. (Une mise à jour limitée est un type d’instruction UPDATE du serveur de publication qui réplique en tant que DELETE/INSERT paire 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, où cette valeur dépend du type de réplication (affiché en haut) et du type d’article (indiqué dans la première colonne).

Type de l'article Réplication transactionnelle Réplication d'instantané
schéma d’agrégation uniquement 0x01 0x01
schéma func uniquement 0x01 0x01
schéma d’affichage indexé uniquement 0x01 0x01
indexed view logbased 0x30F3 0x3071
indexed view logbase manualboth 0x30F3 0x3071
indexed view logbased manualfilter 0x30F3 0x3071
vue indexée logbased manualview 0x30F3 0x3071
logbased 0x30F3 0x3071
logbased manualfilter 0x30F3 0x3071
logbased manualview 0x30F3 0x3071
proc exec 0x01 0x01
schéma proc uniquement 0x01 0x01
sérialisable proc exec 0x01 0x01
afficher le schéma uniquement 0x01 0x01

Remarque

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

Options de schéma valides

Ce tableau décrit les valeurs autorisées de @schema_option en fonction du type de réplication (affiché en haut) et du type d’article (indiqué dans la première colonne).

Type de l'article Réplication transactionnelle Réplication d'instantané
logbased Toute les options Toutes les options, mais 0x02
logbased manualfilter Toute les options Toutes les options, mais 0x02
logbased manualview Toute les options Toutes les options, mais 0x02
indexed view logbased Toute les options Toutes les options, mais 0x02
indexed view logbased manualfilter Toute les options Toutes les options, mais 0x02
vue indexée logbased manualview Toute les options Toutes les options, mais 0x02
indexed view logbase manualboth Toute les options Toutes les options, mais 0x02
proc exec 0x01, , 0x200x20000000x4000000x8000000x2000, et 0x80000000x100000000x200000000x400000000x80000000 0x01, , 0x200x20000000x4000000x8000000x2000, et 0x80000000x100000000x200000000x400000000x80000000
sérialisable proc exec 0x01, , 0x200x20000000x4000000x8000000x2000, et 0x80000000x100000000x200000000x400000000x80000000 0x01, , 0x200x20000000x4000000x8000000x2000, et 0x80000000x100000000x200000000x400000000x80000000
schéma proc uniquement 0x01, , 0x200x20000000x4000000x8000000x2000, et 0x80000000x100000000x200000000x400000000x80000000 0x01, , 0x200x20000000x4000000x8000000x2000, et 0x80000000x100000000x200000000x400000000x80000000
afficher le schéma uniquement 0x01, , 0x010, 0x4000000x2000000x80000000x1000000x20000000x400000x8000000x400000000x0200x0400x01000x20000x80000000 0x01, , 0x010, 0x4000000x2000000x80000000x1000000x20000000x400000x8000000x400000000x0200x0400x01000x20000x80000000
schéma func uniquement 0x01, , 0x200x20000000x4000000x8000000x2000, et 0x80000000x100000000x200000000x400000000x80000000 0x01, , 0x200x20000000x4000000x8000000x2000, et 0x80000000x100000000x200000000x400000000x80000000
schéma d’affichage indexé uniquement 0x01, , 0x010, 0x4000000x2000000x80000000x1000000x20000000x400000x8000000x400000000x0200x0400x01000x20000x80000000 0x01, , 0x010, 0x4000000x2000000x80000000x1000000x20000000x400000x8000000x400000000x0200x0400x01000x20000x80000000

Remarque

Pour les publications mises à jour mises à jour en file d’attente, les valeurs @schema_option et 0x8000 0x80 doivent être activées. Les valeurs de @schema_option prises en charge pour les publications non-SQL Server sont les suivantes : 0x01, , 0x02, 0x400x10, 0x80, , 0x4000 0x1000et 0X8000.

Exemples

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 du rôle serveur fixe sysadmin ou db_owner rôle de base de données fixe peuvent s’exécuter sp_addarticle.