sp_addarticle (Transact-SQL)
Mis à jour : 14 avril 2006
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 de Transact-SQL
Syntaxe
sp_addarticle [ @publication = ] 'publication'
, [ @article = ] 'article'
[ , [ @source_table = ] 'source_table' ]
[ , [ @destination_table = ] 'destination_table' ]
[ , [ @vertical_partition = ] 'vertical_partition' ]
[ , [ @type = ] 'type' ]
[ , [ @filter = ] 'filter' ]
[ , [ @sync_object= ] 'sync_object' ]
[ , [ @ins_cmd = ] 'ins_cmd' ]
[ , [ @del_cmd = ] 'del_cmd' ]
[ , [ @upd_cmd = ] 'upd_cmd' ]
[ , [ @creation_script = ] 'creation_script' ]
[ , [ @description = ] 'description' ]
[ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ]
[ , [ @filter_clause = ] 'filter_clause' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @destination_owner = ] 'destination_owner' ]
[ , [ @status = ] status ]
[ , [ @source_owner = ] 'source_owner' ]
[ , [ @sync_object_owner = ] 'sync_object_owner' ]
[ , [ @filter_owner = ] 'filter_owner' ]
[ , [ @source_object = ] 'source_object' ]
[ , [ @artid = ] article_ID OUTPUT ]
[ , [ @auto_identity_range = ] 'auto_identity_range' ]
[ , [ @pub_identity_range = ] pub_identity_range ]
[ , [ @identity_range = ] identity_range ]
[ , [ @threshold = ] threshold ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @use_default_datatypes = ] use_default_datatypes
[ , [ @identityrangemanagementoption = ] identityrangemanagementoption ]
[ , [ @publisher = ] 'publisher' ]
[ , [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' ]
Arguments
- [ @publication=] 'publication'
Nom de la publication contenant l'article. Le nom doit être unique dans la base de données. L'argument publication est du type sysname, sans valeur par défaut.
- [ @article=] 'article'
Nom de l'article. Le nom doit être unique dans la publication. L'argument article est du type sysname, sans valeur par défaut.
- [ @source_table = ] 'source_table'
Ce paramètre a été désapprouvé et est pris en charge pour la compatibilité ascendante des scripts ; utilisez plutôt 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 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. Non pris en charge 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. Non pris en charge 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.
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. L'argument 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 la capture instantanée 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
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é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 la capture instantanée 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 la capture instantanée. 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 :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
[ @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 la capture instantanée initiale, 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 la capture instantanée initiale, 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
- [ @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 de capture instantanée 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.
Remarque : auto_identity_range a été désapprouvé 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é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 une capture instantanée existante. 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 la capture instantanée. Si la procédure stockée détecte que la modification requiert une nouvelle capture instantanée, 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 la capture instantanée. En outre, s'il existe des abonnements nécessitant une nouvelle capture instantanée, cette valeur permet de marquer la capture instantanée existante comme obsolète et de générer une nouvelle capture instantanée.
[ @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.
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 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.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 utilisateur répliqués sont exécutés lorsque la capture instantanée initiale est appliquée. 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 la capture instantanée est appliquée. Pour que les déclencheurs soient répliqués, la valeur de masque de bits de schema_option doit inclure la valeur 0x100.
Notes
La procédure sp_addarticle est utilisée dans une réplication de capture instantanée 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 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.
Pour les articles prenant en charge des abonnements transformables, les valeurs spécifiées pour ins_cmd, del_cmd et upd_cmd sont ignorées.
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 |
Capture instantanée |
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 |
serialized proc exec |
0x01 |
0x01 |
view schema only |
0x01 |
0x01 |
Remarque : |
---|
Si une publication est activée pour la mise à jour en attente, une valeur schema_option de 0x80 est ajoutée à la valeur par défaut affichée dans le tableau. La valeur par défaut de schema_option pour une publication non-SQL Server est de 0x050D3. |
Options de schéma valides
Ce tableau décrit les valeurs autorisées de schema_option en fonction du type de réplication (dans la partie supérieure) et du type d'article (dans la première colonne).
Type de l'article | Type de réplication | |
---|---|---|
|
Transactionnelle |
Capture instantanée |
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 |
serialized proc exec |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000 |
proc schema only |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000 |
view schema only |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 et 0x80000000 |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 et 0x80000000 |
func schema only |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000 |
0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000 |
indexed view schema only |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 et 0x80000000 |
0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 et 0x80000000 |
Remarque : |
---|
Dans le cas des publications avec mise à jour en attente, les valeurs schema_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. |
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.
Valeurs des codes retournés
0 (succès) ou 1 (échec)
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
Voir aussi
Référence
sp_articlecolumn (Transact-SQL)
sp_articlefilter (Transact-SQL)
sp_articleview (Transact-SQL)
sp_changearticle (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)
Procédures stockées de réplication (Transact-SQL)
Autres ressources
How to: Define an Article (Replication Transact-SQL Programming)
Publication de données et d'objets de base de données
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Version | Historique |
---|---|
14 avril 2006 |
|
5 décembre 2005 |
|