sp_changearticle (Transact-SQL)
S’applique à : SQL Server Azure 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 = ] N'publication' ]
[ , [ @article = ] N'article' ]
[ , [ @property = ] N'property' ]
[ , [ @value = ] N'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] N'publisher' ]
[ ; ]
Arguments
[ @publication = ] N’publication'
Nom de la publication qui contient l’article. @publication est sysname, avec la valeur par défaut NULL
.
[ @article = ] N’article'
Nom de l’article dont la propriété doit être modifiée. @article est sysname, avec la valeur par défaut NULL
.
[ @property = ] N’property'
Propriété d’article à modifier. @property est nvarchar(100), avec la valeur par défaut NULL
.
[ @value = ] N’value'
Nouvelle valeur de la propriété d’article. @value est nvarchar(255), avec la valeur par défaut NULL
.
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. Par défaut, il s’agit de NULL . |
|
del_cmd |
DELETE instruction à exécuter ; sinon, elle est construite à partir du journal. |
|
description |
Nouvelle entrée descriptive de l'article. | |
dest_object |
Fourni pour la compatibilité ascendante. Utiliser 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). Par défaut, il s’agit de NULL . Impossible de modifier 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 l'instantané initial est appliqué. Remarque : Pour que les déclencheurs soient répliqués, la valeur du masque de bits de schema_option doit inclure la valeur 0x100 . |
false |
Les déclencheurs 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 |
INSERT instruction à exécuter ; sinon, elle est construite à partir du journal. |
|
pre_creation_cmd |
Commande de précréation qui peut supprimer, supprimer 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 binary(8). Pour plus d’informations, consultez la section Remarques. |
|
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é sont scriptées à l’aide de la IDENTITY propriété. |
|
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é. Cette option ne peut pas être utilisée lorsqu’il existe une CHECK ou DEFAULT une contrainte sur une colonne UDT, si une colonne UDT fait partie de la clé primaire ou si une colonne calculée fait référence à 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, toutes les FOREIGN KEY contraintes sur une table publiée ne sont pas répliquées. |
|
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 d’un article de table en tant que contraintes à l’aide ALTER TABLE d’instructions.Remarque : cette option est déconseillée. Utilisez plutôt 0x80 et 0x4000 . |
|
0x10000 |
Réplique les contraintes CHECK de NOT FOR REPLICATION sorte que les contraintes ne soient pas appliquées pendant la synchronisation. |
|
0x20000 |
Réplique les contraintes FOREIGN KEY de NOT FOR REPLICATION sorte que les contraintes ne soient pas appliquées pendant 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ègles. | |
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 |
Tentez de supprimer des dépendances vers des objets qui ne font pas partie de la composition. | |
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 0x800000000 associée . |
|
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 sur 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é sur l’Abonné. Pour plus d’informations sur la création d’objets avant d’appliquer l’instantané, consultez Exécuter des scripts avant et après l’application de l’instantané. Voir l’option 0x100000000 associée . |
|
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 les 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 la référence de méthode de type de données hierarchyid. | |
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 d’instantané pour créer une table mémoire optimisée sur l’abonné. | |
0x80000000000 |
Convertit l’index cluster en index non cluster pour les articles à mémoire optimisée. | |
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 répliquée INSERT . |
|
no column names |
Les noms de colonnes ne sont pas inclus dans l’instruction répliquée INSERT . |
|
no dts horizontal partitions |
La partition horizontale de 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 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. | |
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. Par défaut, il s’agit de 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 également de définir les propriétés et filter les sync_object propriétés. Non pris en charge pour les serveurs de publication Oracle. |
|
logbased manualfilter |
Article reposant sur un journal, avec filtre manuel. Cette option nécessite également de définir les propriétés et filter les sync_object propriétés. 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 vous définissiez également la sync_object propriété. 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, la table de base n’a pas besoin d’être publiée 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 également de définir les propriétés et filter les sync_object propriétés. Pour ce type d’article, la table de base n’a pas besoin d’être publiée 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 également de définir les propriétés et filter les sync_object propriétés. Pour ce type d’article, la table de base n’a pas besoin d’être publiée 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 vous définissiez également la sync_object propriété. Pour ce type d’article, la table de base n’a pas besoin d’être publiée séparément. Non pris en charge pour les serveurs de publication Oracle. |
|
upd_cmd |
UPDATE instruction à exécuter ; sinon, elle est construite à 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 un instantané existant. @force_invalidate_snapshot est bit, avec la valeur par défaut 0
.
0
spécifie que les modifications apportées à l’article n’entraînent pas l’invalidation de l’instantané. 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 l’instantané non valide et, s’il existe des abonnements existants qui nécessitent un nouvel instantané, donne l’autorisation de marquer l’instantané existant comme obsolète et un nouvel instantané généré.
Consultez la section Remarques pour les propriétés qui, en cas de modification, nécessitent la génération d’un nouvel instantané.
[ @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. @force_reinit_subscription est bit, avec la valeur par défaut 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 exige que les abonnements existants soient réinitialisés, une erreur se produit et aucune modification n’est apporté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.
Consultez la section Remarques pour les propriétés qui, en cas de modification, nécessitent que tous les abonnements existants soient réinitialisés.
[ @publisher = ] N’publisher'
Spécifie un serveur de publication non-SQL Server. @publisher est sysname, avec la valeur par défaut NULL
.
Remarque
l’éditeur 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 de retour
0
(réussite) or 1
(échec).
Notes
sp_changearticle
est utilisé dans la réplication d’instantanés 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 les propriétés, ins_cmd
et upd_cmd
del_cmd
les description
propriétés.
La modification de l’une des propriétés suivantes nécessite qu’un nouvel instantané soit généré et que vous devez spécifier une valeur pour 1
le paramètre @force_invalidate_snapshot :
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 une valeur pour 1
le paramètre @force_reinit_subscription .
del_cmd
dest_table
destination_owner
filter
ins_cmd
status
upd_cmd
Au sein d’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’utilisation 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’après le type de schema_option
réplication (illustré en haut) et le 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 |
indexed view 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 0x2000000 0x400000 0x800000 0x2000 , et 0x8000000 0x10000000 0x20000000 0x40000000 0x80000000 |
0x01 , , 0x20 0x2000000 0x400000 0x800000 0x2000 , et 0x8000000 0x10000000 0x20000000 0x40000000 0x80000000 |
serializable proc exec |
0x01 , , 0x20 0x2000000 0x400000 0x800000 0x2000 , et 0x8000000 0x10000000 0x20000000 0x40000000 0x80000000 |
0x01 , , 0x20 0x2000000 0x400000 0x800000 0x2000 , et 0x8000000 0x10000000 0x20000000 0x40000000 0x80000000 |
proc schema only |
0x01 , , 0x20 0x2000000 0x400000 0x800000 0x2000 , et 0x8000000 0x10000000 0x20000000 0x40000000 0x80000000 |
0x01 , , 0x20 0x2000000 0x400000 0x800000 0x2000 , et 0x8000000 0x10000000 0x20000000 0x40000000 0x80000000 |
view schema only |
0x01 , , 0x010 , 0x400000 0x200000 0x8000000 0x100000 0x2000000 0x40000 0x800000 0x40000000 0x020 0x040 0x0100 0x2000 0x80000000 |
0x01 , , 0x010 , 0x400000 0x200000 0x8000000 0x100000 0x2000000 0x40000 0x800000 0x40000000 0x020 0x040 0x0100 0x2000 0x80000000 |
func schema only |
0x01 , , 0x20 0x2000000 0x400000 0x800000 0x2000 , et 0x8000000 0x10000000 0x20000000 0x40000000 0x80000000 |
0x01 , , 0x20 0x2000000 0x400000 0x800000 0x2000 , et 0x8000000 0x10000000 0x20000000 0x40000000 0x80000000 |
indexed view schema only |
0x01 , , 0x010 , 0x400000 0x200000 0x8000000 0x100000 0x2000000 0x40000 0x800000 0x40000000 0x020 0x040 0x0100 0x2000 0x80000000 |
0x01 , , 0x010 , 0x400000 0x200000 0x8000000 0x100000 0x2000000 0x40000 0x800000 0x40000000 0x020 0x040 0x0100 0x2000 0x80000000 |
Remarque
Pour les publications mises à jour mises à jour en file d’attente, la schema_option
valeur de 0x80
doit être activée. Les valeurs prises en charge schema_option
pour les publications non-SQL Server sont les suivantes : 0x01
, , 0x02
0x10
, 0x40
, , 0x80
et 0x1000
0x4000
.
Exemples
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 s’exécuter sp_changearticle
.