Share via


sp_articlefilter (Transact-SQL)

Filtre les données publiées en fonction d'un article de table. Cette procédure stockée est exécutée au niveau du serveur de publication sur la base de données de publication.

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

Syntaxe

sp_articlefilter [ @publication = ] 'publication' 
        , [ @article = ] 'article'
    [ , [ @filter_name = ] 'filter_name' ]
    [ , [ @filter_clause = ] 'filter_clause' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @publisher = ] 'publisher' ]

Arguments

  • [ @publication=] 'publication'
    Nom de la publication contenant l'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.

  • [ @filter_name=] 'filter_name'
    Nom de la procédure stockée de filtre à créer à partir de filter_name. filter_name est de type nvarchar(386), avec NULL comme valeur par défaut. Vous devez spécifier un nom unique pour le filtre d'article.

  • [ @filter_clause=] 'filter_clause'
    Clause de restriction (WHERE) qui définit un filtre horizontal. Quand vous entrez la clause de restriction, omettez le mot clé WHERE. filter_clause est de type ntext, avec NULL comme valeur par défaut.

  • [ @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 n'entraînent pas la réinitialisation des abonnements. Si la procédure stockée détecte que la modification nécessite 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 cette réinitialisation.

  • [ @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]

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

Valeurs des codes de retour

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

Notes

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

L'exécution de la procédure sp_articlefilter pour un article lié à des abonnements existants nécessite la réinitialisatiuon de ceux-ci.

sp_articlefilter crée le filtre et insère l'ID de la procédure stockée de filtre dans la colonne filter de la table sysarticles (Transact-SQL) ; elle insère également le texte de la clause de restriction dans la colonne filter_clause.

Pour créer un article présentant un filtre horizontal, exécutez sp_addarticle (Transact-SQL) sans paramètre filter. Exécutez sp_articlefilter en spécifiant tous les paramètres, y compris filter_clause, puis exécutez sp_articleview (Transact-SQL) en spécifiant tous les paramètres, y compris le même filter_clause. Si le filtre existe déjà et que le type dans sysarticles est 1 (article basé sur le journal), le filtre précédent est supprimé et un nouveau filtre créé.

Si les paramètres filter_name et filter_clause ne sont pas fournis, le filtre précédent est supprimé et l'ID du filtre prend la valeur 0.

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 sont habilités à exécuter sp_articlefilter.

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)

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

Concepts

Définir un article

Définir et modifier un filtre de lignes statiques