sp_articlefilter (Transact-SQL)

Si applica a:SQL ServerIstanza gestita di SQL di Azure

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

Convenzioni di sintassi Transact-SQL

Sintassi

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

Argomenti

[ @publication = ] N'publication'

Nome della pubblicazione contenente l'articolo. @publication è sysname, senza impostazione predefinita.

[ @article = ] N'article'

Nome dell'articolo. @article è sysname, senza impostazione predefinita.

[ @filter_name = ] N'filter_name'

Nome della stored procedure di filtro da creare dal @filter_name. @filter_name è nvarchar(517), con un valore predefinito .NULL È necessario specificare un nome univoco per il filtro per gli articoli.

[ @filter_clause = ] N'filter_clause'

Clausola di restrizione (WHERE) che definisce un filtro orizzontale. Quando si immette la clausola di restrizione, omettere la parola chiave WHERE. @filter_clause è nvarchar(max), con il valore predefinito NULL.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Segnala che l'azione eseguita da questa stored procedure potrebbe invalidare uno snapshot esistente. @force_invalidate_snapshot è bit, con il valore predefinito 0.

  • 0 specifica che le modifiche apportate all'articolo non causano l'invalidità 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 potrebbero causare l'invalidità dello snapshot e, se sono presenti sottoscrizioni esistenti che richiedono un nuovo snapshot, concede l'autorizzazione per contrassegnare lo snapshot esistente come obsoleto e un nuovo snapshot generato.

[ @force_reinit_subscription = ] force_reinit_subscription

Segnala che l'azione eseguita dalla stored procedure potrebbe richiedere la reinizializzazione delle sottoscrizioni esistenti. @force_reinit_subscription è bit, con un valore predefinito .0

  • 0 specifica che le modifiche apportate all'articolo non causano la reinizializzazione delle 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 apportate all'articolo causano la reinizializzazione delle sottoscrizioni esistenti e concede l'autorizzazione per la reinizializzazione della sottoscrizione.

[ @publisher = ] N'publisher'

Specifica un server di pubblicazione non SQL Server. @publisher è sysname, con un valore predefinito .NULL

@publisher non deve essere usato con un server di pubblicazione di SQL Server.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

sp_articlefilter viene usato nella replica snapshot e nella replica transazionale.

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

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

Per creare un articolo con un filtro orizzontale, eseguire sp_addarticle (Transact-SQL) senza parametri @filter_name . Eseguire sp_articlefilter, specificando tutti i parametri inclusi @filter_clause, quindi eseguire sp_articleview (Transact-SQL), fornendo tutti i parametri inclusi gli stessi @filter_clause. Se il filtro esiste già e se in typesysarticles è 1 (articolo basato su log), il filtro precedente viene eliminato e viene creato un nuovo filtro.

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

Esempi

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.