Partager via


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.

Icône Lien de rubriqueConventions de la syntaxe de 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. 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.

    RemarqueRemarque
    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 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.

    RemarqueRemarque
    Cette 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.

    [!REMARQUE]

    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.

[!REMARQUE]

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

[!REMARQUE]

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 [AdventureWorks]
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.