sp_articlefilter (Transact-SQL)sp_articlefilter (Transact-SQL)

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database (Managed Instance uniquement) nonAzure Synapse Analytics (SQL DW) nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Filtre les données publiées en fonction d'un article de table.Filters data that are published based on a table article. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.This stored procedure is executed at the Publisher on the publication database.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

  
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' ]  

ArgumentsArguments

[ @publication = ] 'publication'Nom de la publication qui contient l’article.[ @publication = ] 'publication' Is the name of the publication that contains the article. publication est de type sysname, sans valeur par défaut.publication is sysname, with no default.

[ @article = ] 'article'Nom de l’article.[ @article = ] 'article' Is the name of the article. article est de type sysnameet n’a pas de valeur par défaut.article is sysname, with no default.

[ @filter_name = ] 'filter_name'Nom de la procédure stockée de filtre à créer à partir du filter_name.[ @filter_name = ] 'filter_name' Is the name of the filter stored procedure to be created from the filter_name. filter_name est de type nvarchar (386) , avec NULL comme valeur par défaut.filter_name is nvarchar(386), with a default of NULL. Vous devez spécifier un nom unique pour le filtre d'article.You must specify a unique name for the article filter.

[ @filter_clause = ] 'filter_clause'Clause de restriction (WHERE) qui définit un filtre horizontal.[ @filter_clause = ] 'filter_clause' Is a restriction (WHERE) clause that defines a horizontal filter. Quand vous entrez la clause de restriction, omettez le mot clé WHERE.When entering the restriction clause, omit the keyword WHERE. filter_clause est de type ntext, avec NULL comme valeur par défaut.filter_clause is ntext, with a default of NULL.

[ @force_invalidate_snapshot = ] force_invalidate_snapshotConfirme que l’action entreprise par cette procédure stockée peut invalider un instantané existant.[ @force_invalidate_snapshot = ] force_invalidate_snapshot Acknowledges that the action taken by this stored procedure may invalidate an existing snapshot. force_invalidate_snapshot est un bit, avec 0comme valeur par défaut.force_invalidate_snapshot is a bit, with a default of 0.

0 indique que les modifications apportées à l’article n’entraînent pas la non-validité de l’instantané.0 specifies that changes to the article do not cause the snapshot to be invalid. 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.If the stored procedure detects that the change does require a new snapshot, an error occurs and no changes are made.

1 indique que les modifications apportées à l’article peuvent entraîner la non-validité de l’instantané, et s’il existe des abonnements qui nécessitent un nouvel instantané, donne l’autorisation de marquer l’instantané existant comme obsolète et de générer un nouvel instantané.1 specifies that changes to the article may cause the snapshot to be invalid, and if there are existing subscriptions that would require a new snapshot, gives permission for the existing snapshot to be marked as obsolete and a new snapshot generated.

[ @force_reinit_subscription = ] force_reinit_subscriptionConfirme que l’action entreprise par cette procédure stockée peut nécessiter la réinitialisation des abonnements existants.[ @force_reinit_subscription = ] force_reinit_subscription Acknowledges that the action taken by this stored procedure may require existing subscriptions to be reinitialized. force_reinit_subscription est un bit, avec 0comme valeur par défaut.force_reinit_subscription is a bit, with a default of 0.

0 indique que les modifications apportées à l’article n’entraînent pas la réinitialisation des abonnements.0 specifies that changes to the article do not cause a need for subscriptions to be reinitialized. 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.If the stored procedure detects that the change would require subscriptions to be reinitialized, an error occurs and no changes are made.

1 indique que les modifications apportées à l’article entraînent la réinitialisation des abonnements existants et autorise la réinitialisation de l’abonnement.1 specifies that changes to the article causes existing subscriptions to be reinitialized, and gives permission for the subscription reinitialization to occur.

[ @publisher = ] 'publisher'Spécifie un serveur MicrosoftMicrosoft de publication non- SQL ServerSQL Server .[ @publisher = ] 'publisher' Specifies a non- MicrosoftMicrosoft SQL ServerSQL Server Publisher. Publisher est de type sysname, avec NULL comme valeur par défaut.publisher is sysname, with a default of NULL.

Notes

l' éditeur ne doit pas être utilisé SQL ServerSQL Server avec un serveur de publication.publisher should not be used with a SQL ServerSQL Server Publisher.

Valeurs des codes de retourReturn Code Values

0 (succès) ou 1 (échec)0 (success) or 1 (failure)

NotesRemarks

sp_articlefilter est utilisé dans la réplication d’instantané et la réplication transactionnelle.sp_articlefilter is used in snapshot replication and transactional replication.

L’exécution de sp_articlefilter pour un article avec des abonnements existants exige que ces abonnements soient réinitialisés.Executing sp_articlefilter for an article with existing subscriptions requires that those subscriptions to be reinitialized.

sp_articlefilter crée le filtre, insère l’ID de la procédure stockée de filtre dans la colonne filtre de la table Transact-) SQL (sysarticles , puis insère le texte de la clause de restriction dans le filtre. colonne _clause .sp_articlefilter creates the filter, inserts the ID of the filter stored procedure in the filter column of the sysarticles (Transact-SQL) table, and then inserts the text of the restriction clause in the filter_clause column.

Pour créer un article avec un filtre horizontal, exécutez sp_addarticle (Transact-SQL) sans paramètre de filtre .To create an article with a horizontal filter, execute sp_addarticle (Transact-SQL) with no filter parameter. Exécutez sp_articlefilter, en fournissant tous les paramètres, y compris filter_clause, puis exécutez (sp_articleview)Transact-SQL, en fournissant tous les paramètres, y compris la même filter_clause.Execute sp_articlefilter, providing all parameters including filter_clause, and then execute sp_articleview (Transact-SQL), providing all parameters including the identical filter_clause. Si le filtre existe déjà et si le type dans sysarticles est 1 (article basé sur le journal), le filtre précédent est supprimé et un nouveau filtre est créé.If the filter already exists and if the type in sysarticles is 1 (log-based article), the previous filter is deleted and a new filter is created.

Si filter_name et filter_clause ne sont pas fournis, le filtre précédent est supprimé et l’ID de filtre est défini sur 0.If filter_name and filter_clause are not provided, the previous filter is deleted and the filter ID is set to 0.

ExempleExample

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

AutorisationsPermissions

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_articlefilter.Only members of the sysadmin fixed server role or db_owner fixed database role can execute sp_articlefilter.

Voir aussiSee Also

Define an Article Define an Article
Définir et modifier un filtre de lignes statique Define and Modify a Static Row Filter
sp_addarticle (Transact-SQL) sp_addarticle (Transact-SQL)
sp_articleview (Transact-SQL) sp_articleview (Transact-SQL)
sp_changearticle (Transact-SQL) sp_changearticle (Transact-SQL)
sp_droparticle (Transact-SQL) sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL) sp_helparticle (Transact-SQL)
Procédures stockées de réplication (Transact-SQL)Replication Stored Procedures (Transact-SQL)