Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais

sp_addarticle (Transact-SQL)

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.

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

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

[ @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. Pas de prise 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. Pas de prise 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. Pas de prise 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. Pas de prise 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. Pas de prise 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. Pas de prise 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. Pas de prise 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. Pas de prise 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. Pas de prise 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. Pas de prise en charge pour les serveurs de publication Oracle.

La procédure stockée également doit ê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. Pas de prise 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 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

none

N'utilise pas de commande.

Méthode 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. 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 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 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 (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 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 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 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.

0 (succès) ou 1 (échec)

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

Snapshot

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

Snapshot

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 Remarque

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 : 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000, 0x4000 et 0X8000.

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

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.

Ajouts de la communauté

AJOUTER
Afficher: