sp_articleview (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

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 im Publisher in der Publikationsdatenbank ausgeführt.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @publication = ] N'Publikation'

Der Name der Publikation, die den Artikel enthält. @publication ist "sysname" ohne Standard.

[ @article = ] N'article'

Der Name des Artikels. @article ist "sysname" ohne Standard.

[ @view_name = ] N'view_name'

Der Name der Ansicht, die den veröffentlichten Artikel definiert. @view_name ist nvarchar(386), mit einem Standardwert von NULL.

[ @filter_clause = ] N'filter_clause'

Eine Einschränkungsklausel (WHERE), die einen horizontalen Filter definiert. Wenn Sie die Einschränkungsklausel eingeben, lassen Sie die WHERE Schlüsselwort (keyword) aus. @filter_clause ist nvarchar(max), mit einem Standardwert von NULL.

[ @change_active = ] change_active

Ermöglicht das Ändern der Spalten in Veröffentlichungen, für die Abonnements vorhanden sind. @change_active ist int mit einem Standardwert von 0.

  • Wenn 0, spalten werden nicht geändert.
  • Wenn 1, können Ansichten in aktiven Artikeln mit Abonnements erstellt oder neu erstellt werden.

[ @force_invalidate_snapshot = ] force_invalidate_Momentaufnahme

Erkennt an, dass die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise eine vorhandene Momentaufnahme ungültig macht. @force_invalidate_Momentaufnahme ist bit, mit einem Standardwert von 0.

  • 0Gibt an, dass Änderungen am Artikel nicht dazu führen, dass die Momentaufnahme ungültig sind. Wenn die gespeicherte Prozedur erkennt, dass die Änderungen eine neue Momentaufnahme erfordern, tritt ein Fehler auf und es werden keine Änderungen vorgenommen.
  • 1Gibt an, dass Änderungen am Artikel dazu führen können, dass die Momentaufnahme ungültig sind, und wenn vorhandene Abonnements vorhanden sind, die eine neue Momentaufnahme erfordern, erteilen Sie die Berechtigung, dass die vorhandenen Momentaufnahme als veraltet gekennzeichnet werden und eine neue Momentaufnahme generiert wird.

[ @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 bit, mit einem Standardwert von 0.

  • 0 Gibt an, dass Änderungen am Artikel nicht dazu führen, dass das Abonnement erneut initialisiert wird. Wenn die gespeicherte Prozedur erkennt, dass die Änderung abonnements erneut initialisiert werden muss, tritt ein Fehler auf, und es werden keine Änderungen vorgenommen.
  • 1 Gibt an, dass Änderungen am Artikel dazu führen, dass vorhandene Abonnements erneut initialisiert werden, und erteilt die Berechtigung für die Erneute Initialisierung des Abonnements.

[ @publisher = ] N'publisher'

Gibt einen Nicht-SQL Server-Herausgeber an. @publisher ist "sysname" mit der Standardeinstellung "NULL.

@publisher sollte beim Veröffentlichen aus einem SQL Server-Herausgeber nicht verwendet werden.

[ @refreshsynctranprocs = ] refreshsynctranprocs

Gibt an, ob die zum Synchronisieren der Replikation verwendeten gespeicherten Prozeduren automatisch neu erstellt werden. @refreshsynctranprocs ist bit, mit einem Standardwert von 1.

  • 1 bedeutet, dass die gespeicherten Prozeduren neu erstellt werden.
  • 0 bedeutet, dass die gespeicherten Prozeduren nicht neu erstellt werden.

[ @internal = ] intern

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_articleview erstellt die Ansicht, die den veröffentlichten Artikel definiert und die ID dieser Ansicht in die sync_objid Spalte der Sysarticles -Tabelle (Transact-SQL) einfügt und den Text der Einschränkungsklausel in die filter_clause Spalte einfügt. Wenn alle Spalten repliziert werden und kein filter_clauseWert vorhanden ist, wird die sync_objid in der Tabelle sysarticles (Transact-SQL) auf die ID der Basistabelle festgelegt, und die Verwendung ist sp_articleview nicht erforderlich.

Wenn Sie eine vertikal gefilterte Tabelle (d. h. zum Filtern von Spalten) zuerst sp_addarticle ohne @sync_object Parameter veröffentlichen möchten, führen Sie sp_articlecolumn (Transact-SQL) einmal aus, damit jede Spalte repliziert wird (der vertikale Filter definiert wird), und führen Sie dann aus sp_articleview , um die Ansicht zu erstellen, die den veröffentlichten Artikel definiert.

Um eine horizontal gefilterte Tabelle (d. h. zum Filtern von Zeilen) zu veröffentlichen, führen Sie sp_addarticle (Transact-SQL) ohne @filter_name Parameter aus. Führen Sie sp_articlefilter (Transact-SQL) aus, und stellen Sie alle Parameter einschließlich @filter_clause bereit. Führen Sie dann aus sp_articleview, und stellen Sie alle Parameter einschließlich der identischen @filter_clause bereit.

Um eine vertikal und horizontal gefilterte Tabelle zu veröffentlichen, führen Sie sp_addarticle (Transact-SQL) ohne @sync_object oder @filter_name Parameter aus . Führen Sie sp_articlecolumn (Transact-SQL) einmal aus, damit jede Spalte repliziert werden soll, und führen Sie dann sp_articlefilter (Transact-SQL) und sp_articleview.

Wenn der Artikel bereits über eine Ansicht verfügt, die den veröffentlichten Artikel definiert, sp_articleview legt die vorhandene Ansicht ab und erstellt automatisch eine neue Ansicht. Wenn die Ansicht manuell erstellt wurde (type in Sysarticles (Transact-SQL) ist 5), wird die vorhandene Ansicht nicht gelöscht.

Wenn Sie eine benutzerdefinierte gespeicherte Filterprozedur und eine Ansicht erstellen, die den veröffentlichten Artikel manuell definiert, führen Sie nicht aus sp_articleview. Stellen Sie stattdessen diese Werte als @filter_name- und @sync_object Parameter bereit, um sp_addarticle (Transact-SQL) zusammen mit dem entsprechenden @type Wert zu sp_addarticle.

Beispiele

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 db_owner feste Datenbankrolle können ausgeführt werden sp_articleview.