sp_articlecolumn (Transact-SQL)

Permet de spécifier les colonnes incluses dans un article pour filtrer verticalement des données dans une table publiée. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.

Icône Lien de rubrique Conventions de la syntaxe de Transact-SQL

Syntaxe

sp_articlecolumn [ @publication = ] 'publication' 
        , [ @article = ] 'article'
    [ , [ @column = ] 'column' ]
    [ , [ @operation = ] 'operation' ]
    [ , [ @refresh_synctran_procs = ] refresh_synctran_procs ]
    [ , [ @ignore_distributor = ] ignore_distributor ]
    [ , [ @change_active = ] change_actve ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @internal = ] 'internal' ]

Arguments

  • [ @publication=] 'publication'
    Nom de la publication qui contient cet article. publication est de type sysname, sans valeur par défaut.

  • [ @article=] 'article'
    Nom de l'article. article est de type sysname, sans valeur par défaut.

  • [ @column=] 'column'
    Nom de la colonne à ajouter ou supprimer. column est de type sysname, avec NULL comme valeur par défaut. Si la valeur est NULL, toutes les colonnes sont publiées.

  • [ @operation=] 'operation'
    Spécifie s'il faut ajouter ou supprimer des colonnes dans un article. operation est de type nvarchar(5), avec add comme valeur par défaut. add spécifie la réplication de la colonne. drop annule la désignation de la colonne.

  • [ @refresh_synctran_procs=] refresh_synctran_procs
    Indique si les procédures stockées qui prennent en charge les abonnements de mise à jour immédiate sont actualisées pour qu'il y ait correspondance avec le nombre de colonnes répliquées. refresh_synctran_procs est de type bit, avec 1 comme valeur par défaut. Si sa valeur est 1, les procédures stockées sont actualisées.

  • [ @ignore_distributor =] ignore_distributor
    Indique si cette procédure stockée s'exécute sans connexion au serveur de distribution. ignore_distributor est de type bit, avec 0 comme valeur par défaut. Si la valeur est 0, la base de données doit être activée pour la publication, et le cache de l'article doit être actualisé pour refléter les nouvelles colonnes répliquées par l'article. Si la valeur est 1, les colonnes des articles résidant dans une base de données non publiée peuvent être supprimées. Utilisez cette valeur uniquement dans le cas d'une récupération de base de données.

  • [ @change_active = ] change_active
    Autorise la modification des colonnes dans les publications possédant des abonnements. change_active est de type int, avec 0 comme valeur par défaut. Si la valeur est 0, les colonnes ne sont pas modifiées. Si la valeur est 1, des colonnes peuvent être ajoutées ou supprimées à partir d'articles actifs possédant des abonnements.

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Signale que l'action entreprise par cette procédure stockée peut invalider un instantané existant. force_invalidate_snapshot est de type bit, avec 0 comme valeur par défaut.

    0 indique que les modifications apportées à l'article n'invalident pas l'instantané. Si la procédure stockée détecte que la modification requiert un nouvel instantané, 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 l'instantané. En outre, s'il existe déjà des abonnements nécessitant un instantané, cette valeur permet de marquer l'instantané existant comme obsolète et de générer 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 de type bit, avec 0 comme valeur par défaut.

    0 indique que les modifications apportées à l'article ne réinitialisent pas l'abonnement. Si la procédure stockée détecte que la modification requiert la réinitialisation des abonnements, une erreur se produit 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.

  • [ @publisher= ] 'publisher'
    Spécifie un serveur de publication non Microsoft SQL Server. publisher est de type sysname, avec NULL comme valeur par défaut.

    [!REMARQUE]

    publisher ne doit pas être utilisé avec un serveur de publication SQL Server.

  • [ @internal= ] 'internal'
    À usage interne uniquement.

Valeurs des codes de retour

0 (succès) ou 1 (échec)

Notes

La procédure sp_articlecolumn est utilisée dans une réplication transactionnelle et une réplication d'instantané.

Seul un article ne faisant pas l'objet d'un abonnement peut être filtré par sp_articlecolumn.

Exemple

DECLARE @publication    AS sysname;
DECLARE @table AS sysname;
DECLARE @filterclause AS nvarchar(500);
DECLARE @filtername AS nvarchar(386);
DECLARE @schemaowner AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @table = N'Product';
SET @filterclause = N'[DiscontinuedDate] IS NULL'; 
SET @filtername = N'filter_out_discontinued';
SET @schemaowner = N'Production';

-- Add a horizontally and vertically filtered article for the Product table.
-- Manually set @schema_option to ensure that the Production schema 
-- is generated at the Subscriber (0x8000000).
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @table, 
    @source_object = @table,
    @source_owner = @schemaowner, 
    @schema_option = 0x80030F3,
    @vertical_partition = N'true', 
    @type = N'logbased',
    @filter_clause = @filterclause;

-- (Optional) Manually call the stored procedure to create the 
-- horizontal filtering stored procedure. Since the type is 
-- 'logbased', this stored procedures is executed automatically.
EXEC sp_articlefilter 
    @publication = @publication, 
    @article = @table, 
    @filter_clause = @filterclause, 
    @filter_name = @filtername;

-- Add all columns to the article.
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table;

-- Remove the DaysToManufacture column from the article
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table, 
    @column = N'DaysToManufacture', 
    @operation = N'drop';

-- (Optional) Manually call the stored procedure to create the 
-- vertical filtering view. Since the type is 'logbased', 
-- this stored procedures is executed automatically.
EXEC sp_articleview 
    @publication = @publication, 
    @article = @table,
    @filter_clause = @filterclause;
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 la procédure sp_articlecolumn.

Voir aussi

Référence

sp_addarticle (Transact-SQL)

sp_articleview (Transact-SQL)

sp_changearticle (Transact-SQL)

sp_droparticle (Transact-SQL)

sp_helparticle (Transact-SQL)

sp_helparticlecolumns (Transact-SQL)

Procédures stockées de réplication (Transact-SQL)

Concepts

Définir un article

Définir et modifier un filtre de colonne

Filtrer des données publiées