sp_articlefilter (Transact-SQL)
Filtert Daten, die auf Grundlage eines Tabellenartikels veröffentlicht werden. Diese gespeicherte Prozedur wird auf dem Verleger für die Veröffentlichungsdatenbank ausgeführt.
Transact-SQL-Syntaxkonventionen
Syntax
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' ]
Argumente
[ @publication=] 'publication'
Der Name der Veröffentlichung, die den Artikel enthält. publication ist vom Datentyp sysname und hat keinen Standardwert.[ @article=] 'article'
Der Name des Artikels. article ist vom Datentyp sysname und hat keinen Standardwert.[ @filter_name=] 'filter_name'
Der Name der gespeicherten Filterprozedur, die aus dem filter_name erstellt werden soll. filter_name ist vom Datentyp nvarchar(386) und hat den Standardwert NULL. Sie müssen einen eindeutigen Namen für den Artikelfilter angeben.[ @filter_clause=] 'filter_clause'
Eine Einschränkungsklausel (WHERE), die einen horizontalen Filter definiert. Wenn Sie die Einschränkungsklausel eingeben, lassen Sie das Schlüsselwort WHERE weg. filter_clause ist vom Datentyp ntext und hat den Standardwert NULL.[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Bestätigt, dass durch die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise eine vorhandene Momentaufnahme ungültig wird. force_invalidate_snapshot ist vom Datentyp bit. Der Standardwert ist 0.Der Wert 0 gibt an, dass Änderungen an dem Artikel nicht bewirken, dass die Momentaufnahme ungültig wird. Wenn die gespeicherte Prozedur erkennt, dass die Änderungen eine neue Momentaufnahme erfordern, tritt ein Fehler auf und es werden keine Änderungen vorgenommen.
Der Wert 1 gibt an, dass die Momentaufnahme durch Ändern des Artikels ungültig werden kann. Wenn Abonnements vorhanden sind, die eine neue Momentaufnahme erfordern, wird mit diesem Wert die Berechtigung erteilt, die vorhandene Momentaufnahme als veraltet zu markieren und eine neue Momentaufnahme zu generieren.
[ @force_reinit_subscription = ] force_reinit_subscription
Bestätigt, dass die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise das erneute Initialisieren von vorhandenen Abonnements erfordert. force_reinit_subscription ist vom Datentyp bit. Der Standardwert ist 0.0 gibt an, dass Änderungen am Artikel nicht bewirken, dass Abonnements erneut initialisiert werden müssen. Wenn die gespeicherte Prozedur erkennt, dass die Änderung die erneute Initialisierung von Abonnements erfordert, tritt ein Fehler auf, und es werden keine Änderungen durchgeführt.
Der Wert 1 gibt an, dass Änderungen am Artikel die erneute Initialisierung vorhandener Abonnements bewirken. Außerdem wird mit diesem Wert die Berechtigung zur erneuten Initialisierung des Abonnements erteilt.
[ @publisher= ] 'publisher'
Gibt einen Nicht-Microsoft SQL Server-Verleger an. publisher ist vom Datentyp sysname und hat den Standardwert NULL.Hinweis publisher sollte nicht mit einem SQL Server-Verleger verwendet werden.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Hinweise
sp_articlefilter wird bei der Momentaufnahme- und Transaktionsreplikation verwendet.
Das Ausführen von sp_articlefilter für einen Artikel mit vorhandenen Abonnements setzt die erneute Initialisierung dieser Abonnements voraus.
sp_articlefilter erstellt den Filter und fügt die ID der gespeicherten Filterprozedur in die filter-Spalte der sysarticles (Transact-SQL)-Tabelle und dann den Text der Einschränkungsklausel in die filter_clause-Spalte ein.
Führen Sie sp_addarticle (Transact-SQL) ohne filter-Parameter aus, um einen Artikel mit einem horizontalen Filter zu erstellen. Führen Sie sp_articlefilter aus, und geben Sie dabei alle Parameter an, einschließlich filter_clause. Führen Sie dann sp_articleview (Transact-SQL) aus, und geben Sie dabei alle Parameter an, einschließlich eines identischen Werts für filter_clause. Wenn der Filter bereits vorhanden und type in sysarticles gleich 1 (protokollbasierter Artikel) ist, wird der vorherige Filter gelöscht und ein neuer Filter erstellt.
Wenn Sie filter_name und filter_clause nicht angeben, wird der bestehende Filter gelöscht, und die Filter-ID wird auf 0 festgelegt.
Beispiel
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
Berechtigungen
Nur Mitglieder der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner können sp_articlefilter ausführen.
Siehe auch
Verweis
sp_changearticle (Transact-SQL)
Gespeicherte Replikationsprozeduren (Transact-SQL)