Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
Skapar vyn som definierar den publicerade artikeln när en tabell filtreras vertikalt eller horisontellt. Denna vy används som filtrerad källa för schemat och data för destinationstabellerna. Endast avprenumererade artiklar kan modifieras med denna lagrade procedur. Den här lagrade proceduren körs i Publisher i publikationsdatabasen.
Transact-SQL syntaxkonventioner
Syntax
sys.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 ]
[ ; ]
Arguments
[ @publication = ] N'publicering'
Namnet på publikationen som innehåller artikeln. @publication är sysname, utan standard.
[ @article = ] Inte en artikel'
Namnet på artikeln. @article är sysname, utan standard.
[ @view_name = ] N'view_name'
Namnet på den åsikt som definierar den publicerade artikeln.
@view_name är nvarchar(386), med en standard på NULL.
[ @filter_clause = ] N'filter_clause'
En restriktionsklausul (WHERE) som definierar ett horisontellt filter. När du anger begränsningsklausulen, utelämna nyckelordet WHERE .
@filter_clause är nvarchar(max), med standardvärdet .NULL
[ @change_active = ] change_active
Tillåter att ändra kolumner i publikationer som har prenumerationer.
@change_active är int, med standardvärdet .0
- Om
0, ändras inte kolumnerna. - Om
1, kan visningar skapas eller återskapas på aktiva artiklar som har prenumerationer.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Erkänner att åtgärden som utförs av denna lagrade procedur kan ogiltigförklara en befintlig snapshot.
@force_invalidate_snapshot är bit, med standardvärdet 0.
-
0anger att ändringar i artikeln inte gör att ögonblicksbilden blir ogiltig. Om den lagrade proceduren upptäcker att ändringen kräver en ny snapshot, uppstår ett fel och inga ändringar görs. -
1specificerar att ändringar i artikeln kan göra att snapshoten blir ogiltig, och om det finns befintliga prenumerationer som kräver en ny snapshot, ger den tillåtelse att den befintliga snapshoten markeras som föråldrad och generera en ny snapshot.
[ @force_reinit_subscription = ] force_reinit_subscription
Erkänner att åtgärden som utförs av denna lagrade procedur kan kräva att befintliga prenumerationer initialiseras om.
@force_reinit_subscription är lite, med standardvärdet 0.
-
0anger att ändringar i artikeln inte gör att prenumerationen initieras på nytt. Om den lagrade proceduren upptäcker att ändringen skulle kräva att prenumerationer initialiseras igen, uppstår ett fel och inga ändringar görs. -
1specificerar att ändringar i artikeln orsakar att befintlig prenumeration återinitieras, och ger tillstånd för att prenumerationsreinitialiseringen ska ske.
[ @publisher = ] N'publisher'
Anger en utgivare som inte är SQL Server.
@publisher är sysname, med standardvärdet .NULL
@publisher bör inte användas när man publicerar från en SQL Server Publisher.
[ @refreshsynctranprocs = ] refreshsynctranprocs
Specificerar om de lagrade procedurerna som används för att synkronisera replikering automatiskt återskapas.
@refreshsynctranprocs är bit, med standardvärdet .1
-
1betyder att de lagrade procedurerna återskapas. -
0Det betyder att de lagrade procedurerna inte återskapas.
[ @internal = ] intern
Identifieras endast i informationssyfte. Stöds ej. Framtida kompatibilitet garanteras inte.
Returnera kodvärden
0 (lyckades) eller 1 (fel).
Remarks
sp_articleview skapar vyn som definierar den publicerade artikeln och infogar ID:t för denna vy i kolumnen sync_objid i sysartikeltabellen , samt infogar texten från begränsningsklausulen i kolumnen filter_clause . Om alla kolumner replikeras och det inte finns något filter_clause, sätts sync_objid i sysartikeltabellen till bastabellens ID, och användningen av sp_articleview är inte nödvändig.
För att publicera en vertikalt filtrerad tabell (det vill säga filtrera kolumner) kör sp_addarticle först utan @sync_object parameter, kör sp_articlecolumn en gång för varje kolumn som ska replikeras (definierar det vertikala filtret), och kör sp_articleview sedan för att skapa vyn som definierar den publicerade artikeln.
För att publicera en horisontellt filtrerad tabell (det vill säga filtrera rader), kör sp_addarticle utan @filter_name parameter. Kör sp_articlefilter och ange alla parametrar inklusive @filter_clause. Kör sp_articleviewsedan , med alla parametrar inklusive identiska @filter_clause.
För att publicera en tabell med vertikal och horisontell filtrering, kör sp_addarticle utan @sync_object eller @filter_name parametrar. Kör sp_articlecolumn en gång för varje kolumn som ska replikeras, och kör sedan sp_articlefilter och sp_articleview.
Om artikeln redan har en vy som definierar den publicerade artikeln, sp_articleview ta bort den befintliga vyn och skapa en ny automatiskt. Om vyn skapades manuellt (type i sysarticles är 5), tas inte den befintliga vyn bort.
Om du skapar en anpassad filterlagrad projetil och en vy som manuellt definierar den publicerade artikeln, kör sp_articleviewinte . Ange istället dessa värden som @filter_name och @sync_object parametrar att sp_addarticle, tillsammans med lämpligt @type värde.
Examples
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
Permissions
Endast medlemmar av sysadmin-fasta serverrollen eller db_owner fasta databasrollen kan köra sp_articleview.