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.
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.
RemarqueCette 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.
Voir aussi