sp_changearticle (Transact-SQL)
Modifie les propriétés d'un article dans une publication transactionnelle ou de capture instantanée. Cette procédure stockée est exécutée au niveau du serveur de publication dans la base de données de publication.
Syntaxe
sp_changearticle [ [@publication= ] 'publication' ]
[ , [ @article= ] 'article' ]
[ , [ @property= ] 'property' ]
[ , [ @value= ] 'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] 'publisher' ]
Arguments
[ @publication=] 'publication'
Nom de la publication qui contient l'article. L'argument publication est de type sysname, avec NULL comme valeur par défaut.[ @article=] 'article'
Nom de l'article dont la propriété doit être modifiée. article est de type sysname, avec NULL comme valeur par défaut.[ @property=] 'property'
Propriété de l'article à modifier. property est de type nvarchar(100).[ @value=] 'value'
Nouvelle valeur de la propriété d'article. value est de type nvarchar(255).Le tableau ci-dessous décrit les propriétés des articles et les valeurs de ces propriétés.
Propriété
Valeurs
Description
creation_script
Chemin d'accès et nom d'un script de schéma d'article utilisé pour créer des tables cibles. La valeur par défaut est NULL.
del_cmd
Instruction DELETE à exécuter ; à défaut, elle sera élaborée à partir du journal.
description
Nouvelle entrée descriptive de l'article.
dest_object
Fourni pour la compatibilité ascendante. Utilisez dest_table.
dest_table
Nouvelle table de destination.
destination_owner
Nom du propriétaire de l'objet de destination.
filter
Nouvelle procédure stockée à utiliser pour filtrer la table (filtrage horizontal). La valeur par défaut est NULL. Ne peut pas être modifié pour les publications dans la réplication d'égal à égal.
fire_triggers_on_snapshot
true
Les déclencheurs de l'utilisateur répliqués sont exécutés lorsque la capture instantanée initiale est appliquée.
RemarquePour que les déclencheurs soient répliqués, la valeur de masque de bits de schema_option doit inclure la valeur 0x100.false
Les déclencheurs de l'utilisateur répliqués ne sont pas exécutés lorsque la capture instantanée initiale est appliquée.
identity_range
Contrôle la taille des plages d'identité affectées à l'abonné. Non pris en charge pour la réplication d'égal à égal.
ins_cmd
Instruction INSERT à exécuter ; à défaut, elle sera élaborée à partir du journal.
pre_creation_cmd
Définit une commande de précréation pouvant supprimer, effacer ou tronquer la table de destination avant l'application de la synchronisation.
none
N'utilise pas de commande.
drop
Supprime la table de destination.
delete
Détruit la table de destination.
truncate
Tronque la table de destination.
pub_identity_range
Contrôle la taille des plages d'identité affectées à l'abonné. Non pris en charge pour la réplication d'égal à égal.
schema_option
Spécifie le bitmap de l'option de génération de schéma pour l'article considéré. schema_option est de type binary(8). Pour plus d'informations, consultez la section Remarques plus loin dans cette rubrique.
0x00
Désactive les scripts de l'Agent de capture instantanée.
0x01
Génère la création d'objets (CREATE TABLE, CREATE PROCEDURE, etc.).
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.
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. Pas de prise en charge pour les serveurs de publication Oracle.
0x40
Génère les index non-cluster correspondants.
0x80
Inclut l'intégrité référentielle déclarée dans les clés primaires.
0x100
Réplique les déclencheurs utilisateur, si ceux-ci sont définis, sur un article de table.
0x200
Réplique les contraintes FOREIGN KEY. Si la table référencée ne fait pas partie d'une publication, aucune contrainte FOREIGN KEY appliquée à une table publiée n'est répliquée.
0x400
Réplique les contraintes CHECK.
0x800
Réplique les valeurs par défaut.
0x1000
Réplique le classement au niveau des colonnes.
0x2000
Réplique les propriétés étendues associées à l'objet source de l'article publié.
0x4000
Réplique les clés uniques, si celles-ci sont définies, sur un article de table.
0x8000
Réplique la clé primaire et les clés uniques sur un article de table sous forme de contraintes, à l'aide d'instructions ALTER TABLE.
RemarqueCette option a été désapprouvée. Utilisez 0x80 et 0x4000 à la place.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)) qui ont été 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) qui sont 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 la capture instantanée à l'Abonné. Pour plus d'informations sur la création d'objets avant d'appliquer la capture instantanée, 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) de plus de 8 000 octets en 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.
status
Spécifie le nouvel état de la propriété.
dts horizontal partitions
Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.
include column names
Les noms de colonnes sont inclus dans l'instruction INSERT répliquée.
no column names
Les noms de colonnes ne sont pas inclus dans l'instruction INSERT répliquée.
no dts horizontal partitions
La partition horizontale pour l'article n'est pas définie par un abonnement transformable.
none
Efface toutes les options d'état dans la table sysarticles et marque l'article comme étant inactif.
parameters
Les modifications sont propagées vers l'abonné à l'aide de commandes paramétrées. Il s'agit du paramètre par défaut pour un nouvel article.
string literals
Les modifications sont propagées vers l'abonné à l'aide de valeurs littérales de chaîne.
sync_object
Nom de la table ou de la vue utilisée pour produire un fichier de sortie de synchronisation. La valeur par défaut est NULL. Pas de prise en charge pour les serveurs de publication Oracle.
tablespace
Identifie l'espace de table utilisé par la table de journalisation pour un article publié à partir d'une base de données Oracle. Pour plus d'informations, consultez Gestion des espaces disque logiques Oracle.
threshold
Valeur de pourcentage qui contrôle le moment où l'Agent de distribution affecte une nouvelle plage d'identité. Non pris en charge pour la réplication d'égal à égal.
type
Pas de prise en charge pour les serveurs de publication Oracle.
logbased
Article basé sur le journal.
logbased manualboth
Article reposant sur un journal, avec filtre manuel et vue manuelle. Pour cette option, il est nécessaire que les propriétés sync_object et filter soient définies. La prise en charge n'est pas assurée pour les serveurs de publication Oracle.
logbased manualfilter
Article reposant sur un journal, avec filtre manuel. Pour cette option, il est nécessaire que les propriétés sync_object et filter soient définies. La prise en charge n'est pas assurée pour les serveurs de publication Oracle.
logbased manualview
Article reposant sur un journal, avec vue manuelle. Pour cette option, il est nécessaire que la propriété sync_object soit définie. La prise en charge n'est pas assurée pour les serveurs de publication Oracle.
indexed viewlogbased
Article de vue indexée reposant sur un journal. La prise en charge n'est pas assurée 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 viewlogbased manualboth
Article de vue indexée reposant sur un journal avec filtre manuel et vue manuelle. Pour cette option, il est nécessaire que les propriétés sync_object et filter soient définies. 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 viewlogbased manualfilter
Article de vue indexée reposant sur un journal avec filtre manuel. Pour cette option, il est nécessaire que les propriétés sync_object et filter soient définies. 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 viewlogbased manualview
Article de vue indexée reposant sur un journal avec vue manuelle. Pour cette option, il est nécessaire que la propriété sync_object soit définie. 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.
upd_cmd
Instruction UPDATE à exécuter ; à défaut, elle sera élaborée à partir du journal.
NULL
NULL
Renvoie une liste de propriétés d'articles modifiables.
[ @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 les modifications apportées à l'article n'invalident pas la capture instantanée. Si la procédure stockée détecte que la modification requiert une nouvelle capture instantanée, une erreur est générée et aucune modification n'est effectuée.
1 indique que les modifications apportées à l'article peuvent entraîner l'invalidation de la capture instantanée. En outre, s'il existe déjà 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.
Pour plus d'informations sur les propriétés qui, lorsqu'elles sont modifiées, nécessitent la génération d'une nouvelle capture instantanée, consultez la section Remarques.
[ **@force_reinit_subscription=]**force_reinit_subscription
Confirme que l'action entreprise par cette procédure stockée peut nécessiter la réinitialisation des abonnements existants. L'argument force_reinit_subscription est de type bit, avec 0 comme valeur par défaut.0 indique que les modifications apportées à l'article n'entraînent pas la réinitialisation de l'abonnement. Si la procédure stockée détecte que la modification requiert la réinitialisation des abonnements existants, une erreur survient et aucune modification n'est effectuée.
1 indique que les modifications apportées à l'article entraînent la réinitialisation des abonnements existants et autorise la réinitialisation des abonnements.
Pour plus d'informations sur les propriétés qui, lorsqu'elles sont modifiées, nécessitent la réinitialisation de tous les abonnements existants, consultez la section Remarques.
[ @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 la modification des propriétés d'article sur un serveur de publication SQL Server.
Valeurs des codes renvoyés
0 (succès) ou 1 (échec)
Notes
sp_changearticle est utilisé dans la capture instantanée et dans la réplication transactionnelle.
Lorsqu'un article appartient à une publication qui prend en charge la réplication transactionnelle d'égal-à-égal, vous ne pouvez modifier que les propriétés description, ins_cmd, upd_cmd et del_cmd.
Le changement de l'une quelconque des propriétés ci-dessous nécessite la génération d'une nouvelle capture instantanée, et vous devez spécifier une valeur de 1 pour le paramètre force_invalidate_snapshot :
del_cmd
dest_table
destination_owner
ins_cmd
pre_creation_cmd
schema_options
upd_cmd
La modification des propriétés suivantes nécessite la réinitialisation des abonnements existants, et vous devez spécifier la valeur 1 pour le paramètre force_reinit_subscription.
del_cmd
dest_table
destination_owner
filter
ins_cmd
status
upd_cmd
Dans une publication existante, vous pouvez utiliser sp_changearticle pour modifier un article sans devoir supprimer et recréer la publication entière.
Notes
Lors de la modification de la valeur de schema_option, le système n'effectue pas de mise à jour au niveau du bit. Cela signifie que lorsque vous définissez schema_option à l'aide de sp_changearticle, les paramètres de bits existants peuvent être désactivés. Pour conserver les paramètres existants, vous devez effectuer & (opération AND au niveau du bit) entre la valeur que vous définissez et la valeur actuelle de schema_option, qui peut être déterminée en exécutant sp_helparticle.
Options de schéma valides
Le tableau suivant 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 |
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, la valeur 0x80 de schema_option doit être activée. Les valeurs schema_option prises en charge pour les publications non SQL Server sont les suivantes : 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000 et 0x4000.
Exemple
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));
-- Change the schema options to replicate schema with XML.
USE [AdventureWorks2008R2]
EXEC sp_changearticle
@publication = @publication,
@article = @article,
@property = N'schema_option',
@value = @option,
@force_invalidate_snapshot = 1;
GO
Autorisations
Seuls les membres du rôle serveur fixe sysadmin ou du rôle de base de données fixe db_owner peuvent exécuter sp_changearticle.
Voir aussi