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

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure (somente a Instância Gerenciada) nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Filtra dados que são publicados com base em um artigo de tabela.Filters data that are published based on a table article. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.This stored procedure is executed at the Publisher on the publication database.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

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

ArgumentosArguments

[ @publication = ] 'publication'É o nome da publicação que contém o artigo.[ @publication = ] 'publication' Is the name of the publication that contains the article. a publicação é sysname, sem padrão.publication is sysname, with no default.

[ @article = ] 'article'É o nome do artigo.[ @article = ] 'article' Is the name of the article. o artigo é sysname, sem padrão.article is sysname, with no default.

[ @filter_name = ] 'filter_name'É o nome do procedimento armazenado de filtro a ser criado a partir de filter_name.[ @filter_name = ] 'filter_name' Is the name of the filter stored procedure to be created from the filter_name. filter_name é nvarchar (386) , com um padrão de NULL.filter_name is nvarchar(386), with a default of NULL. Você deve especificar um nome exclusivo para o filtro de artigo.You must specify a unique name for the article filter.

[ @filter_clause = ] 'filter_clause'É uma cláusula de restrição (WHERE) que define um filtro horizontal.[ @filter_clause = ] 'filter_clause' Is a restriction (WHERE) clause that defines a horizontal filter. Ao inserir a cláusula de restrição, omita a palavra-chave WHERE.When entering the restriction clause, omit the keyword WHERE. filter_clause é ntext, com um padrão de NULL.filter_clause is ntext, with a default of NULL.

[ @force_invalidate_snapshot = ] force_invalidate_snapshotO reconhece que a ação executada por esse procedimento armazenado pode invalidar um instantâneo existente.[ @force_invalidate_snapshot = ] force_invalidate_snapshot Acknowledges that the action taken by this stored procedure may invalidate an existing snapshot. force_invalidate_snapshot é um bit, com um padrão de 0.force_invalidate_snapshot is a bit, with a default of 0.

0 especifica que as alterações no artigo não fazem com que o instantâneo seja inválido.0 specifies that changes to the article do not cause the snapshot to be invalid. Se o procedimento armazenado detectar que a alteração requer um novo instantâneo, ocorrerá um erro e nenhuma alteração será feita.If the stored procedure detects that the change does require a new snapshot, an error occurs and no changes are made.

1 especifica que as alterações no artigo podem fazer com que o instantâneo seja inválido e, se houver assinaturas existentes que exijam um novo instantâneo, concederá permissão para o instantâneo existente ser marcado como obsoleto e um novo instantâneo gerado.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_subscriptionReconhece que a ação executada por este procedimento armazenado pode exigir que as assinaturas existentes sejam reinicializadas.[ @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 é um bit, com um padrão de 0.force_reinit_subscription is a bit, with a default of 0.

0 especifica que as alterações no artigo não causam a reinicialização das assinaturas.0 specifies that changes to the article do not cause a need for subscriptions to be reinitialized. Se o procedimento armazenado detectar que a alteração exigiria que as assinaturas fossem reinicializadas, ocorrerá um erro e nenhuma alteração será feita.If the stored procedure detects that the change would require subscriptions to be reinitialized, an error occurs and no changes are made.

1 especifica que as alterações no artigo fazem com que as assinaturas existentes sejam reinicializadas e concede a permissão para que a reinicialização da assinatura ocorra.1 specifies that changes to the article causes existing subscriptions to be reinitialized, and gives permission for the subscription reinitialization to occur.

[ @publisher = ] 'publisher'Especifica um não MicrosoftMicrosoft SQL ServerSQL Server Publicador.[ @publisher = ] 'publisher' Specifies a non- MicrosoftMicrosoft SQL ServerSQL Server Publisher. o Publicador é sysname, com um padrão de NULL.publisher is sysname, with a default of NULL.

Observação

o Publicador não deve ser usado SQL ServerSQL Server com um Publicador.publisher should not be used with a SQL ServerSQL Server Publisher.

Valores do código de retornoReturn Code Values

0 (êxito) ou 1 (falha)0 (success) or 1 (failure)

ComentáriosRemarks

sp_articlefilter é usado na replicação de instantâneo e na replicação transacional.sp_articlefilter is used in snapshot replication and transactional replication.

A execução de sp_articlefilter para um artigo com assinaturas existentes requer que essas assinaturas sejam reinicializadas.Executing sp_articlefilter for an article with existing subscriptions requires that those subscriptions to be reinitialized.

sp_articlefilter cria o filtro, insere a ID do procedimento armazenado de filtro na coluna filtro da tabela Transact- () SQL sysarticles e insere o texto da cláusula de restrição no filtro coluna _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.

Para criar um artigo com um filtro horizontal, execute sp_addarticle (Transact-SQL) sem nenhum parâmetro de filtro .To create an article with a horizontal filter, execute sp_addarticle (Transact-SQL) with no filter parameter. Execute sp_articlefilter, fornecendo todos os parâmetros, incluindo filter_clause, e Execute (sp_articleview Transact-)SQL, fornecendo todos os parâmetros, incluindo filter_clauseidênticos.Execute sp_articlefilter, providing all parameters including filter_clause, and then execute sp_articleview (Transact-SQL), providing all parameters including the identical filter_clause. Se o filtro já existir e se o tipo em sysarticles for 1 (artigo baseado em log), o filtro anterior será excluído e um novo filtro será criado.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.

Se filter_name e filter_clause não forem fornecidos, o filtro anterior será excluído e a ID do filtro será definida como 0.If filter_name and filter_clause are not provided, the previous filter is deleted and the filter ID is set to 0.

ExemploExample

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

PermissõesPermissions

Somente os membros da função de servidor fixa sysadmin ou da função de banco de dados fixa db_owner podem executar sp_articlefilter.Only members of the sysadmin fixed server role or db_owner fixed database role can execute sp_articlefilter.

Consulte tambémSee Also

Define an Article Define an Article
Definir e modificar um filtro de linha estático 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)
Procedimentos armazenados de replicação (Transact-SQL)Replication Stored Procedures (Transact-SQL)