sys.sp_articleview (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzureSQL Managed Instance

Bir tablo dikey veya yatay olarak filtrelendiğinde yayımlanan makaleyi tanımlayan görünümü oluşturur. Bu görünüm, hedef tablolar için şema ve verinin filtrelenmiş kaynağı olarak kullanılır. Yalnızca aboneliği kalkmış makaleler bu saklanan prosedürle değiştirilebilir. Bu saklı yordam yayın veritabanındaki Publisher'da yürütülür.

Transact-SQL söz dizimi kuralları

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 = ] Yayın yok'

Makaleyi içeren yayının adı. @publicationsysname'dir, varsayılan yoktur.

[ @article = ] N'article'

Makalenin adı. @articlesysname'dir, varsayılan yoktur.

[ @view_name = ] N'view_name'

Yayımlanan makaleyi tanımlayan görüşün adı. @view_namenvarchar(386)'dır ve varsayılan olarak .NULL

[ @filter_clause = ] N'filter_clause'

Yatay bir filtre tanımlayan bir kısıtlama (WHERE) maddesi. Kısıtlama maddesine girerken anahtar kelimeyi WHERE çıkarın. @filter_clausenvarchar(max), varsayılan olarak .NULL

[ @change_active = ] change_active

Aboneliği olan yayınlardaki sütunların değiştirilmesine izin verir. @change_activeint, varsayılan olarak .0

  • Eğer 0, sütunlar değişmez.
  • Eğer 1, aboneliği olan aktif makalelerde görüntülemeler oluşturulabilir veya yeniden oluşturulabilir.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Bu saklanan prosedürün aldığı işlemin mevcut bir anlık görüntüyü geçersiz kılabileceğini kabul eder. @force_invalidate_snapshotbittir ve varsayılan değeridir 0.

  • 0 , makalede yapılan değişikliklerin anlık görüntünün geçersiz olmasını neden olmadığını belirtir. Eğer saklanan prosedür değişikliğin yeni bir anlık görüntü gerektirdiğini tespit ederse, hata oluşur ve hiçbir değişiklik yapılmaz.
  • 1 makaledeki değişikliklerin snapshot'un geçersiz hale gelmesine yol açabileceğini belirtir ve yeni bir snapshot gerektiren mevcut abonelikler varsa, mevcut snapshot'un modası geçersiz olarak işaretlenmesine ve yeni bir snapshot oluşturulmasına izin verir.

[ @force_reinit_subscription = ] force_reinit_subscription

Bu saklanan prosedürün aldığı işlemin mevcut aboneliklerin yeniden başlatılmasını gerektirebileceğini kabul eder. @force_reinit_subscriptionbittir ve varsayılan değeridir 0.

  • 0 makaledeki değişikliklerin aboneliğin yeniden başlatılmasına neden olmadığını belirtir. Eğer kayıtlı prosedür değişikliğin aboneliklerin yeniden başlatılması gerektiğini tespit ederse, bir hata oluşur ve hiçbir değişiklik yapılmaz.
  • 1 makaledeki değişikliklerin mevcut aboneliğin yeniden başlatılmasına yol açtığını belirtir ve abonelik yeniden başlatma izni verir.

[ @publisher = ] N'publisher'

SQL Server olmayan bir yayımcı belirtir. @publishersysname'dir ve varsayılan olarak .NULL

@publisher SQL Server Publisher'dan yayın yaparken kullanılmamalıdır.

[ @refreshsynctranprocs = ] refreshsynctranprocs

Replikasyonu senkronize etmek için kullanılan saklanan prosedürlerin otomatik olarak yeniden oluşturulup oluşturulmadığını belirtir. @refreshsynctranprocsbit'tir, varsayılan olarak .1

  • 1 Depolanan prosedürlerin yeniden oluşturulması anlamına gelir.
  • 0 bu da depolanan prosedürlerin yeniden oluşturulmadığı anlamına gelir.

[ @internal = ]

Yalnızca bilgilendirme amacıyla tanımlanır. Desteklenmiyor. Gelecekteki uyumluluk garanti edilmemektedir.

Dönüş kodu değerleri

0 (başarı) veya 1 (başarısızlık).

Remarks

sp_articleview yayınlanan makaleyi tanımlayan görünümü oluşturur ve bu görünümün kimliğini sync_objidsysarticles tablosunun sütununa ekler ve kısıtlama maddesinin metnini sütuna filter_clause ekler. Eğer tüm sütunlar çoğaltılırsa ve , filter_clausesync_objid yoksa sistem tablosunda temel tablonun ID'si olarak ayarlanır ve kullanımı sp_articleview zorunlu değildir.

Dikey filtrelenmiş bir tablo yayınlamak (yani sütunları filtrelemek için) önce sp_addarticle parametre olmadan çalıştırın, her sütunun çoğaltılması için sp_articlecolumn bir kez çalıştırın (dikey filtreyi tanımlarak), ardından yayınlanan makaleyi tanımlayan görünümü oluşturmak için çalıştırınsp_articleview.

Yataydan filtrelenmiş bir tablo yayınlamak (yani satır filtrelemek için), @filter_name parametresi olmadan sp_addarticle çalıştırın. sp_articlefilter çalıştırın, @filter_clause dahil tüm parametreleri sağlar. Sonra çalıştırın sp_articleview, aynı @filter_clause dahil tüm parametreleri sağlar.

Dikey ve yatay filtrelenmiş bir tablo yayınlamak için, @sync_object veya @filter_name parametre olmadan sp_addarticle çalıştırın. Her sütunun çoğaltılması için sp_articlecolumn bir kez çalıştırın, ardından sp_articlefilter ve sp_articleview.

Eğer makalede zaten yayımlanan makaleyi tanımlayan bir görünüm varsa, sp_articleview mevcut görünüm kaldırılır ve otomatik olarak yeni bir görünüm oluşturulur. Eğer görünüm manuel olarak oluşturulduysa (typesysarticle'larda ise 5), mevcut görünüm kaldırılmaz.

Eğer özel bir filtre depolanmış prosedür ve yayımlanan makaleyi manuel olarak tanımlayan bir görünüm oluşturursanız, çalıştırmayın sp_articleview. Bunun yerine, bu değerleri @filter_name ve sp_addarticle parametreleri olarak @sync_object parametreleri ile birlikte uygun @type değeri ile birlikte verin.

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

Yalnızca sistem yöneticisi sabit sunucu rolünün veya sabit db_owner veritabanı rolünün sp_articleviewüyeleri çalıştırabilir.