sp_articlefilter (Transact-SQL)
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.
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 include l'articolo. publication è di tipo sysname e non prevede alcun valore predefinito.[ @article=] 'article'
Nome dell'articolo. article è di tipo sysname e non prevede alcun valore predefinito.[ @filter_name=] 'filter_name'
Nome della stored procedure di filtro da creare da filter_name. filter_name è di tipo nvarchar(386) e 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 è di tipo ntext e 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 è di tipo bit e il valore predefinito è 0.0 specifica che le modifiche apportate all'articolo non invalidano lo 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 invalidare lo snapshot e, se sono disponibili sottoscrizioni che richiedono un nuovo snapshot, consente di contrassegnare lo snapshot esistente come obsoleto e di generarne uno nuovo.
[ @force_reinit_subscription = ] force_reinit_subscription
Segnala che l'azione eseguita dalla stored procedure potrebbe richiedere la reinizializzazione delle sottoscrizioni esistenti. force_reinit_subscription è di tipo bit e il valore predefinito è 0.0 specifica che le modifiche apportate all'articolo non comportano la reinizializzazione della sottoscrizione. 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 comportano la reinizializzazione delle sottoscrizioni esistenti e consente la reinizializzazione.
[ @publisher= ] 'publisher'
Specifica un server di pubblicazione non Microsoft SQL Server. publisher è di tipo sysname e il valore predefinito è NULL.Nota
publisher non deve essere utilizzato con un server di pubblicazione di SQL Server.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
Osservazioni
La stored procedure sp_articlefilter viene utilizzata per la replica snapshot e transazionale.
L'esecuzione della stored procedure sp_articlefilter per un articolo che include sottoscrizioni esistenti richiede la reinizializzazione di tali sottoscrizioni.
La stored procedure sp_articlefilter crea il filtro, inserisce l'ID della stored procedure di filtro nella colonna filter della tabella sysarticles (Transact-SQL) e 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 il parametro filter. Eseguire sp_articlefilter specificando tutti i parametri che includono filter_clause, quindi eseguire sp_articleview (Transact-SQL) specificando tutti i parametri che includono lo stesso parametro filter_clause. Se il filtro è già esistente e type in sysarticles è 1 (articolo basato sul log), il filtro precedente viene eliminato e ne viene creato uno nuovo.
Se filter_name e filter_clause vengono omessi, il filtro precedente viene eliminato e l'ID del filtro viene 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 del ruolo predefinito del database db_owner possono eseguire sp_check_subset_filter.
Vedere anche