sp_articleview (Transact-SQL)
Gilt für: SQL Server Azure 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 das WHERE
Schlüsselwort 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_snapshot
Bestätigt, dass die von dieser gespeicherten Prozedur ausgeführte Aktion möglicherweise eine vorhandene Momentaufnahme ungültig macht. @force_invalidate_snapshot ist bit, mit einem Standardwert von 0
.
0
Gibt an, dass Änderungen am Artikel nicht dazu führen, dass die Momentaufnahme ungültig ist. Wenn die gespeicherte Prozedur erkennt, dass die Änderungen eine neue Momentaufnahme erfordern, tritt ein Fehler auf und es werden keine Änderungen vorgenommen.1
Gibt an, dass Änderungen am Artikel dazu führen können, dass die Momentaufnahme ungültig ist. Wenn vorhandene Abonnements vorhanden sind, die eine neue Momentaufnahme erfordern würden, erteilen Sie die Berechtigung, dass die vorhandene Momentaufnahme als veraltet markiert 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 fügt die ID dieser Ansicht in die sync_objid
Spalte der Sysarticles-Tabelle ein und fügt den Text der Einschränkungsklausel in die filter_clause
Spalte ein. Wenn alle Spalten repliziert werden und kein filter_clause
Wert vorhanden ist, wird die sync_objid
In der Sysarticles-Tabelle 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 einmal aus, damit jede Spalte repliziert werden soll (definieren des vertikalen Filters), und führen Sie dann aus sp_articleview
, um die Ansicht zu erstellen, die den veröffentlichten Artikel definiert.
Führen Sie zum Veröffentlichen einer horizontal gefilterten Tabelle (d. h. zum Filtern von Zeilen) sp_addarticle ohne @filter_name Parameter aus. Führen Sie sp_articlefilter 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 ohne @sync_object oder @filter_name Parameter aus . Führen Sie sp_articlecolumn einmal aus, damit jede Spalte repliziert werden soll, und führen Sie dann sp_articlefilter und sp_articleview
aus.
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 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 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
.