Freigeben über


sp_articleview (Transact-SQL)

Erstellt die Sicht für die Definition des veröffentlichten Artikels, wenn eine Tabelle vertikal oder horizontal gefiltert wird. Diese Sicht wird als gefilterte Quelle des Schemas und der Daten für die Zieltabellen verwendet. Mit dieser gespeicherten Prozedur können nur nicht abonnierte Artikel geändert werden. Diese gespeicherte Prozedur wird beim Verleger mit der Veröffentlichungsdatenbank ausgeführt.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_articleview [ @publication = ] 'publication'
        , [ @article = ] 'article'
    [ , [ @view_name = ] 'view_name']
    [ , [ @filter_clause = ] 'filter_clause']
    [ , [ @change_active = ] change_active ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @refreshsynctranprocs = ] refreshsynctranprocs ]
    [ , [ @internal = ] internal ]

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.

  • [ @view_name=] 'view_name'
    Der Name der Sicht, die den veröffentlichten Artikel definiert. view_name ist vom nvarchar(386)-Datentyp und hat den Standardwert NULL.

  • [ @filter_clause=] 'filter_clause'
    Eine Einschränkungsklausel (WHERE), die einen horizontalen Filter definiert. Verwenden Sie bei der Eingabe der Beschränkungsklausel nicht das WHERE-Schlüsselwort. filter_clause ist vom Datentyp ntext und hat den Standardwert NULL.

  • [ @change_active = ] change_active
    Ermöglicht das Ändern von Spalten in Veröffentlichungen, die über Abonnements verfügen. change_active ist vom Datentyp int und hat den Standardwert 0. Bei 0 werden Spalten nicht geändert. Bei 1 können Sichten für aktive Artikel, die Abonnements aufweisen, erstellt oder erneut erstellt werden.

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Bestätigt, dass die von dieser gespeicherten Prozedur ausgeführte Aktion einen vorhandenen Snapshot für ungültig erklären kann. force_invalidate_snapshot ist vom Datentyp bit und hat den Standardwert 0.

    Der Wert 0 gibt an, dass Änderungen an dem Artikel nicht bewirken, dass der Snapshot ungültig wird. Wenn die gespeicherte Prozedur erkennt, dass die Änderungen einen neuen Snapshot erfordern, tritt ein Fehler auf, und es werden keine Änderungen durchgeführt.

    Der Wert 1 gibt an, dass der Snapshot durch Ändern des Artikels ungültig werden kann. Wenn Abonnements vorhanden sind, die einen neuen Snapshot erfordern, wird mit diesem Wert die Berechtigung erteilt, den vorhandenen Snapshot als veraltet zu markieren und einen neuen Snapshot zu generieren.

  • [ @force_reinit_subscription = ] force_reinit_subscription
    Bestätigt, dass die von dieser gespeicherten Prozedur ausgeführte Aktion die erneute Initialisierung vorhandener Abonnements erfordern kann. force_reinit_subscription ist vom Datentyp bit und hat den Standardwert 0.

    Der Wert 0 gibt an, dass Änderungen an dem Artikel nicht bewirken, dass das Abonnement erneut initialisiert wird. 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-MicrosoftSQL Server-Verleger an. publisher ist vom Datentyp sysname und hat den Standardwert NULL.

    HinweisHinweis

    publisher sollte nicht verwendet werden, wenn ein SQL Server-Verleger verwendet wird.

  • [ @refreshsynctranprocs = ] refreshsynctranprocs
    Gibt an, ob die zur Replikationssynchronisierung verwendeten gespeicherten Prozeduren automatisch erneut erstellt werden. refreshsynctranprocs ist vom Datentyp bit und hat den Standardwert 1.

    Der Wert 1 bedeutet, dass die gespeicherten Prozeduren erneut erstellt werden.

    Der Wert 0 bedeutet, dass die gespeicherten Prozeduren nicht erneut erstellt werden.

  • [ @internal= ] internal
    Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_articleview erstellt die Sicht für die Definition des veröffentlichten Artikels und fügt die ID der Sicht in die sync_objid-Spalte der sysarticles (Transact-SQL)-Tabelle sowie den Text der Einschränkungsklausel in die filter_clause-Spalte ein. Wenn alle Spalten repliziert werden und filter_clause nicht vorhanden ist, wird sync_objid in der sysarticles (Transact-SQL)-Tabelle auf die ID der Basistabelle festgelegt, und sp_articleview wird nicht benötigt.

Führen Sie zuerst sp_addarticle ohne sync_object-Parameter aus, um eine Tabelle mit einem vertikalen Filter (zum Filtern von Spalten) zu veröffentlichen. Führen Sie dann sp_articlecolumn (Transact-SQL) für jede zu replizierende Spalte einmal aus (zum Definieren des vertikalen Filters). Danach können Sie die Sicht für die Definition des veröffentlichten Artikels mit sp_articleview erstellen.

Führen Sie sp_addarticle (Transact-SQL) ohne filter-Parameter aus, um eine Tabelle mit einem horizontalen Filter zu veröffentlichen (zum Filtern von Zeilen). Führen Sie sp_articlefilter (Transact-SQL) aus, und stellen Sie alle Parameter einschließlich filter_clause bereit. Führen Sie dann sp_articleview aus, wobei Sie alle Parameter einschließlich eines identischen Werts für filter_clause bereitstellen.

Führen Sie sp_addarticle (Transact-SQL) ohne die Parameter sync_object und filter aus, um eine vertikal und horizontal partitionierte Tabelle zu veröffentlichen. Führen Sie dann sp_articlecolumn (Transact-SQL) für jede zu replizierende Spalte einmal aus, und führen Sie anschließend sp_articlefilter (Transact-SQL) und sp_articleview aus.

Wenn der Artikel bereits eine Sicht für die Definition des veröffentlichten Artikels enthält, löscht sp_articleview die vorhandene Sicht und erstellt automatisch eine neue Sicht. Wenn die Sicht manuell erstellt wurde (type in sysarticles (Transact-SQL) ist 5), wird die vorhandene Sicht nicht gelöscht.

Führen Sie sp_articleview nicht aus, wenn Sie eine benutzerdefinierte gespeicherte Filterprozedur und eine Sicht für die Definition des veröffentlichten Artikels manuell erstellen. Geben Sie diese stattdessen als filter- und sync_object-Parameter für sp_addarticle (Transact-SQL), zusammen mit dem entsprechenden type-Wert, an.

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_articleview ausführen.