sp_articlefilter (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate) SìIstanza gestita di SQL di Azure

Filtra i dati da pubblicare in base a un articolo di tabella. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

[ @publication = ] 'publication' Nome della pubblicazione che contiene l'articolo. publication è sysname, senza alcun valore predefinito.

[ @article = ] 'article' Nome dell'articolo. article è sysname, senza alcun valore predefinito.

[ @filter_name = ] 'filter_name' Nome del filtro stored procedure da creare dall'filter_name. filter_name è nvarchar(386), con il valore predefinito NULL. È necessario specificare un nome univoco per il filtro per gli articoli.

[ @filter_clause = ] 'filter_clause' Clausola di restrizione (WHERE) che definisce un filtro orizzontale. Quando si specifica la clausola di restrizione, omettere la parola chiave WHERE. filter_clause è ntext, con il valore predefinito NULL.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot Riconosce che l'azione eseguita da questo stored procedure può invalidare uno snapshot esistente. force_invalidate_snapshot è un bit, con un valore predefinito di 0.

0 specifica che le modifiche apportate all'articolo non causano l'invalido dello snapshot. Se la stored procedure rileva che la modifica richiede un nuovo snapshot, viene generato un errore e non viene apportata alcuna modifica.

1 specifica che le modifiche apportate all'articolo possono causare l'invalido dello snapshot e, se sono presenti sottoscrizioni esistenti che richiedono un nuovo snapshot, concede l'autorizzazione per l'eliminazione dello snapshot esistente come obsoleto e la generazione di un nuovo snapshot.

[ @force_reinit_subscription = ] force_reinit_subscription Riconosce che l'azione eseguita da questo stored procedure può richiedere la reinizializzazione delle sottoscrizioni esistenti. force_reinit_subscription è un bit, con un valore predefinito di 0.

0 specifica che le modifiche all'articolo non causano la necessità di reinizializzare le sottoscrizioni. Se la stored procedure rileva che la modifica richiede la reinizializzazione delle sottoscrizioni, viene generato un errore e non viene apportata alcuna modifica.

1 specifica che le modifiche all'articolo causano la reinizializzazione delle sottoscrizioni esistenti e concede l'autorizzazione per la reinizializzazione della sottoscrizione.

[ @publisher = ] 'publisher'Specifica un oggetto non Microsoft SQL Server Publisher. publisher è sysname, con il valore predefinito NULL.

Nota

publisher non deve essere usato con un SQL Server Publisher.

Valori del codice restituito

0 (esito positivo) o 1 (errore)

Commenti

sp_articlefilter viene usato nella replica snapshot e nella replica transazionale.

L'sp_articlefilter per un articolo con sottoscrizioni esistenti richiede la reinizializzazione di tali sottoscrizioni.

sp_articlefilter crea il filtro, inserisce l'ID del stored procedure di filtro nella colonna filtro della tabella sysarticles (Transact-SQL) e quindi inserisce il testo della clausola di restrizione nella colonna filter_clause.

Per creare un articolo con un filtro orizzontale, eseguire sp_addarticle (Transact-SQL) senza parametro di filtro. Eseguire sp_articlefilter, fornendo tutti i parametri, incluso filter_clause , e quindi eseguire sp_articleview (Transact-SQL), fornendo tutti i parametri, incluso l'filter_clause . Se il filtro esiste già e se il tipo in sysarticles è 1 (articolo basato su log), il filtro precedente viene eliminato e viene creato un nuovo filtro.

Se filter_name e filter_clause vengono specificati, il filtro precedente viene eliminato e l'ID filtro è impostato su 0.

Esempio

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

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin o db_owner ruolo predefinito del database possono eseguire sp_articlefilter .

Vedere anche

Define an Article
Definire e modificare un filtro di riga statico
sp_addarticle (Transact-SQL)
sp_articleview (Transact-SQL)
sp_changearticle (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
Stored procedure per la replica (Transact-SQL)