sp_changearticle (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Modifie les propriétés d'un article dans une publication transactionnelle ou d'instantané. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.

Conventions de la syntaxe Transact-SQL

Syntaxe

  
sp_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. la publication est sysname, avec une valeur par défaut null.

[ @article = ] 'article' Nom de l’article dont la propriété doit être modifiée. l’article est sysname, avec une valeur par défaut null.

[ @property = ] 'property' Propriété d’article à modifier. estnvarchar(100).

[ @value = ] 'value' Nouvelle valeur de la propriété d’article. la valeur est 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. Le 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). Le par défaut est NULL. Ne peut pas être modifié pour les publications dans la réplication d'égal à égal.
fire_triggers_on_instantané true Les déclencheurs de l'utilisateur répliqués sont exécutés lorsque l'instantané initial est appliqué.

Remarque : Pour 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 l'instantané initial est appliqué.
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.
aucune N'utilise pas de commande.
supprimer 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 binary(8). Pour plus d’informations, consultez la section Remarques plus loin dans cette rubrique.
0x00 Désactive les scripts de l'Agent d'instantané.
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épliquer des colonnes d’horodatage . Si ce n’est pas le cas, les colonnes d’horodatage sont répliquées en tant que binaires.
0x10 Génère un index cluster correspondant.
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.
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.

Remarque : cette option a été déconseillé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 recherche en texte intégral
0x2000000 Les collections de schémas XML liées aux colonnes XML ne sont pas répliquées.
0x4000000 Réplique les index sur les colonnes xml .
0x8000000 Crée tout schéma non encore présent chez l'abonné.
0x10000000 Convertit les colonnes xml en ntext sur l’Abonné.
0x20000000 Convertit les types de données d’objet volumineux (nvarchar(max), varchar(max)et varbinary(max)) introduits dans SQL Server 2005 (9.x) en types de données pris en charge sur SQL Server 2000 (8.x).
0x40000000 Réplique les autorisations.
0x80000000 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 vers des abonnés SQL Server 2005 (9.x). La réplication de tables qui ont des colonnes FILESTREAM vers des abonnés SQL Server 2000 (8.x) n’est pas prise en charge, quelle que soit la façon dont cette option de schéma est définie.

Voir l’option associée 0x800000000.
0x200000000 Convertit les types de données date et heure (date, heure, datetimeoffset et datetime2) qui ont été introduits dans SQL Server 2008 (10.0.x) en types de données pris en charge sur les versions antérieures de SQL Server.
0x400000000 Réplique l'option de compression pour les données et les index. Pour plus d’informations, consultez Compression de données.
0x800000000 Définissez cette option pour stocker les données FILESTREAM dans leur propre groupe de fichiers sur l'Abonné. Si cette option n'est pas définie, les données FILESTREAM sont stockées 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 le instantané, consultez Exécuter des scripts avant et après l’application de l’instantané.

Voir l’option associée 0x100000000.
0x1000000000 Convertit les types clR (Common Language Runtime) définis par l’utilisateur (UDT) supérieurs à 8 000 octets en varbinary(max) afin que les colonnes de type UDT puissent être répliquées vers des Abonnés exécutant SQL Server 2005 (9.x).
0x2000000000 Convertit le type de données hierarchyid en varbinary(max) afin que les colonnes de type hierarchyid puissent être répliquées vers des Abonnés exécutant SQL Server 2005 (9.x). Pour plus d’informations sur l’utilisation de colonnes hierarchyid dans des tables répliquées, consultez hierarchyid (Transact-SQL).
0x4000000000 Réplique tous les index filtrés sur la table. Pour plus d’informations sur les index filtrés, consultez Créer des index filtrés.
0x8000000000 Convertit les types de données geography et geometry en varbinary(max) afin que les colonnes de ces types puissent être répliquées vers des Abonnés exécutant SQL Server 2005 (9.x).
0x10000000000 Réplique les index sur les colonnes de type geography et geometry.
0x20000000000 Réplique l'attribut SPARSE pour les colonnes. Pour plus d’informations sur cet attribut, consultez Utiliser des colonnes éparses.
0x40000000000 Activez le script par l’agent instantané pour créer une table optimisée en mémoire sur l’abonné.
0x80000000000 Convertit l’index cluster en index non cluster pour les articles à mémoire optimisée.
statut Spécifie le nouvel état de la propriété.
partitions horizontales dts Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.
inclure des noms de colonnes Les noms de colonnes sont inclus dans l'instruction INSERT répliquée.
aucun nom de colonne Les noms de colonnes ne sont pas inclus dans l'instruction INSERT répliquée.
pas de partitions horizontales dts La partition horizontale pour l'article n'est pas définie par un abonnement transformable.
aucune Efface toutes les options d’état dans la table sysarticles et marque l’article comme inactif.
parameters Les modifications sont propagées vers l'abonné à l'aide de commandes paramétrables. Il s'agit du paramètre par défaut pour un nouvel article.
littéraux de chaîne 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. Le par défaut est NULL. Non pris 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 Gérer 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 Non pris 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. Cette option nécessite que les propriétés de sync_object et de filtre soient également définies. Non pris en charge pour les serveurs de publication Oracle.
logbased manualfilter Article reposant sur un journal, avec filtre manuel. Cette option nécessite que les propriétés de sync_object et de filtre soient également définies. Non pris en charge pour les serveurs de publication Oracle.
logbased manualview Article reposant sur un journal, avec vue manuelle. Cette option nécessite que la propriété sync_object soit également définie. Non pris en charge pour les serveurs de publication Oracle.
indexed viewlogbased Article de vue indexée reposant 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 viewlogbased manualboth Article de vue indexée reposant sur un journal avec filtre manuel et vue manuelle. Cette option nécessite que les propriétés de sync_object et de filtre soient également définies. 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 viewlogbased manualfilter Article de vue indexée reposant sur un journal avec filtre manuel. Cette option nécessite que les propriétés de sync_object et de filtre soient également définies. 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 viewlogbased manualview Article de vue indexée reposant sur un journal avec vue manuelle. Cette option nécessite que la propriété sync_object soit également définie. 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.
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_snapshotReconnaît que l’action effectuée par cette procédure stockée peut invalider une instantané existante. force_invalidate_instantané est un peu, avec une valeur par défaut de 0.

0 spécifie que les modifications apportées à l’article n’entraînent pas l’instantané non valide. Si la procédure stockée détecte que la modification requiert un nouvel instantané, une erreur se produit et aucune modification n'est effectuée.

1 spécifie que les modifications apportées à l’article peuvent rendre les instantané non valides et, s’il existe des abonnements existants qui nécessitent un nouveau instantané, donne l’autorisation à l’instantané existante d’être marquée comme obsolète et qu’une nouvelle instantané générée.

Consultez la section Remarques pour connaître les propriétés dont la modification nécessite la génération d'un nouvel instantané.

[ @force_reinit_subscription = ]force_reinit_subscription_ Reconnaît que l’action effectuée par cette procédure stockée peut nécessiter la réinitialisation des abonnements existants. force_reinit_subscription est un peu avec une valeur par défaut de 0.

0 spécifie 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 nécessite la réinitialisation des abonnements existants, une erreur se produit et aucune modification n'est effectuée.

1 spécifie que les modifications apportées à l’article entraînent la réinitialisation des abonnements existants et autorisent la réinitialisation de l’abonnement.

Voir la section Remarques pour connaître les propriétés dont la modification requiert la réinitialisation de tous les abonnements existants.

[ @publisher = ] 'publisher' Spécifie un serveur de publication non-SQL Server. publisher est sysname, avec une valeur par défaut null.

Remarque

Publisher ne doit pas être utilisé lors de la modification des propriétés d’article sur un serveur de publication SQL Server.

Codet de retour

0 (réussite) ou 1 (échec)

Notes

sp_changearticle est utilisé dans la réplication instantané et la réplication transactionnelle.

Lorsqu’un article appartient à une publication qui prend en charge la réplication transactionnelle d’égal à égal, vous pouvez uniquement modifier la description, ins_cmd, upd_cmd et les propriétés de del_cmd .

La modification de l’une des propriétés suivantes nécessite qu’une nouvelle instantané soit générée et que vous devez spécifier la valeur 1 pour le paramètre force_invalidate_instantané :

  • del_cmd

  • dest_table

  • destination_owner

  • ins_cmd

  • pre_creation_cmd

  • schema_options

  • upd_cmd

La modification de l’une des propriétés suivantes nécessite que les abonnements existants soient réinitialisés et que vous devez spécifier la valeur 1 pour le paramètre force_reinit_subscription.

  • del_cmd

  • dest_table

  • destination_owner

  • filter

  • ins_cmd

  • statut

  • upd_cmd

Dans une composition existante, vous pouvez utiliser sp_changearticle pour modifier un article sans avoir à supprimer et recréer la composition entière.

Remarque

Lorsque vous modifiez 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 | (OR 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 d’schema_option en fonction du type de réplication (affiché en haut) et du type d’article (indiqué dans la première colonne).

Type de l'article Type de réplication - Transactionnel Type de réplication - Instantané
logbased Toute les options Toutes les options, mais 0x02
logbased manualfilter Toute les options Toutes les options, mais 0x02
logbased manualview Toute les options Toutes les options, mais 0x02
indexed view logbased Toute les options Toutes les options, mais 0x02
indexed view logbased manualfilter Toute les options Toutes les options, mais 0x02
vue indexée logbased manualview Toute les options Toutes les options, mais 0x02
indexed view logbase manualboth Toute les options Toutes les options, mais 0x02
proc exec 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000
sérialisable 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
schéma proc uniquement 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000
afficher le schéma uniquement 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
schéma func uniquement 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 et 0x80000000
schéma d’affichage indexé uniquement 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

Pour les publications mises à jour mises à jour en file d’attente, la valeur schema_option de 0x80 doit être activée. Les valeurs de 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 [AdventureWorks2022]
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 db_owner rôle de base de données fixe peuvent exécuter sp_changearticle.

Voir aussi

Afficher et modifier les propriétés d’un article
Changer les propriétés des publications et des articles
sp_addarticle (Transact-SQL)
sp_articlecolumn (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)