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_snapshot
Reconnaî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)
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour