sp_addmergefilter (Transact-sql)
Başka bir tabloyla birleştirme temel bir bölüm oluşturmak için yeni bir birleştirme filtre ekler. Bu saklı yordam, yayını veritabanı üzerinde yayımcı adresindeki yürütülür.
Transact-SQL Sözdizim Kuralları
Sözdizimi
sp_addmergefilter [ @publication = ] 'publication'
, [ @article = ] 'article'
, [ @filtername = ] 'filtername'
, [ @join_articlename = ] 'join_articlename'
, [ @join_filterclause = ] join_filterclause
[ , [ @join_unique_key = ] join_unique_key ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @filter_type = ] filter_type ]
Bağımsız değişkenler
@publication='publication'
Yayın içinde birleştirme filtre eklenir adıdır. publicationise sysname, hiçbir varsayılan ile.@article='article'
Makale birleştirme filtre eklenmekte olan addır. articleise sysname, hiçbir varsayılan ile.@filtername='filtername'
Filtrenin adıdır. filternamegerekli bir parametredir. filternameise sysname, hiçbir varsayılan ile.@join_articlename='join_articlename'
Hangi alt makale tarafından belirtilen üst makale article, belirtilen JOIN yan tümcesi kullanarak katılması gerekir join_filterclause, alt makale birleştirme filtre filtre ölçütü karşılayan satırları belirlemek için. join_articlenameise sysname, hiçbir varsayılan ile. Madde tarafından verilen yayın olması publication.**@ join_filterclause=**join_filterclause
Tarafından belirtilen alt makale katılmak için kullanılması gereken JOIN yan tümcesi article ve belirtilen üst makale join_article, eleme birleştirme filtre satırları belirlemek için. join_filterclauseise nvarchar(1000).**@join_unique_key=**join_unique_key
Belirtir alt makale arasındaki birleşim article ve üst makale join_article -çok, bire bir, çok bir veya çok çok. join_unique_keyise int, 0 varsayılan. 0 çok bir veya çok çok birleşim gösterir. 1 bire bir veya bir çok birleşim gösterir. Bu değer 1 ne zaman birleştirme sütunları benzersiz bir anahtar oluşturmak join_article, ya da eğer join_filterclausearasında yabancı anahtar articleve birincil anahtarda join_article.Dikkat Bu parametre yalnızca ayarlamak 1 özgünlüğü Teminatlar üst yazı için temel tablodaki birleştirme sütunu bir kısıtlama varsa. Eğer join_unique_keyayarı 1 yanlış yakınsaması veri oluşabilir.
**@ force_invalidate_snapshot=**force_invalidate_snapshot
Bu saklı yordam tarafından gerçekleştirilen eylemi varolan bir anlık görüntüsünü geçersiz kılabilir kabul eder. force_invalidate_snapshotolan bir bit, varsayılan 0.0 geçersiz olduğu anlık görüntüsünü birleştirme makale değişiklikler neden olmaz belirtir. Saklı yordam değiştirmek yeni bir anlık görüntü gerektirecek algılarsa, bir hata ortaya çıkar ve hiçbir değişiklik yapılmayacak.
1 geçersiz olduğu anlık görüntüsünü birleştirme makale değişiklikler neden olabilir ve yeni bir anlık görüntü gerektirecek varolan abonelikleri varsa varolan anlık görüntü geçersiz olarak işaretlenmesi için izni verir ve yeni bir anlık görüntü oluşturulan belirtir.
**@ force_reinit_subscription=**force_reinit_subscription
Bu saklı yordam tarafından gerçekleştirilen eylemi varolan abonelikleri yeniden gerektirdiğine dikkat eder. force_reinit_subscriptionolan bir bit, 0 varsayılan.0 birleştirme makale değişiklikleri abonelik yeniden neden olmaz belirtir. Saklı yordam yeniden abonelikleri değişikliği gerektirecek algılarsa, bir hata ortaya çıkar ve hiçbir değişiklik yapılmayacak.
1 değişiklikleri birleştirme makale yeniden, varolan abonelikleri neden belirtir ve abonelik reinitialization yapılmasına izin verir.
**@filter_type=**filter_type
Eklenen filtre türünü belirtir. filter_typeise tinyint, ve aşağıdaki değerlerden biri olabilir.Değer
Açıklama
1
Yalnızca filtre katılın. Desteklemek için gereken SQL Server Compactaboneleri.
2
Mantıksal kaydı ilişki sadece.
3
Birleşim filtre hem mantıksal kaydı ilişki.
Daha fazla bilgi için, bkz. Grup değişiklikleri'mantıksal kayıtları ile ilgili satırları.
Dönüş Kodu Değerleri
0 (başarılı) veya 1 (hata)
Açıklamalar
sp_addmergefilter birleştirme çoğaltması kullanılır.
sp_addmergefilter tablo makaleleri ile yalnızca kullanılabilir. Görünümü ve dizinlenmiş görünümün Makaleler desteklenmez.
Bu yordam, aralarında birleşim filtre olmayabilir veya iki makaleleri arasında mantıksal bir ilişki eklemek için de kullanılabilir. filter_typeeklenen birleştirme filtre birleştirme filtre, mantıksal bir ilişki ya da her ikisi de olup olmadığını belirtmek için kullanılır.
Mantıksal kayıtları kullanmak için yayın ve makaleler bir dizi gereksinimleri karşılamalıdır. Daha fazla bilgi için, bkz. Grup değişiklikleri'mantıksal kayıtları ile ilgili satırları.
Genellikle bu seçenek yayımlanmış bir birincil anahtar tablosundaki yabancı anahtar başvurusu içeren bir makale için kullanılır ve birincil anahtar tablosu onun makalesinde tanımlanan filtre vardır. Satırlar alt kümesini birincil anahtarı yabancı anahtar satırları abone çoğaltılır belirlemek için kullanılır.
Kaynak tablolar her iki makaleler için aynı tablo nesne adını paylaşırken iki makaleleri arasında birleştirme filtre eklenemiyor. Her iki tablonun farklı şemalar tarafından sahibi olduğu ve benzersiz makale adları, bile böyle bir durumda, birleştirme filtre oluşturma başarısız olur.
Parametreli satır filtre ve birleşim filtre bir tablo makale kullanıldığında, çoğaltma bir abone bölüm içinde bir satır ait olup olmadığını belirler. O does öylesine süzme işlevi veya birleştirme filtre değerlendirerek (kullanarak or operatör), iki koşul kesişim değerlendirme yerine (kullanarak ve operatör).
Örnek
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesOrderHeader';
SET @table3 = N'SalesOrderDetail';
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';
-- Add a filtered article for the Employee table.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_object = @table1,
@type = N'table',
@source_owner = @hrschema,
@schema_option = 0x0004CF1,
@description = N'article for the Employee table',
@subset_filterclause = @filterclause;
-- Add an article for the SalesOrderHeader table that is filtered
-- based on Employee and horizontally filtered.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_object = @table2,
@type = N'table',
@source_owner = @salesschema,
@vertical_partition = N'true',
@schema_option = 0x0034EF1,
@description = N'article for the SalesOrderDetail table';
-- Add an article for the SalesOrderDetail table that is filtered
-- based on SaledOrderHeader.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table3,
@source_object = @table3,
@source_owner = @salesschema,
@description = 'article for the SalesOrderHeader table',
@identityrangemanagementoption = N'auto',
@pub_identity_range = 100000,
@identity_range = 100,
@threshold = 80,
@schema_option = 0x0004EF1;
-- Add all columns to the SalesOrderHeader article.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Remove the credit card Approval Code column.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@column = N'CreditCardApprovalCode',
@operation = N'drop',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between Employee and SalesOrderHeader.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table2,
@filtername = N'SalesOrderHeader_Employee',
@join_articlename = @table1,
@join_filterclause = N'Employee.EmployeeID = SalesOrderHeader.SalesPersonID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table3,
@filtername = N'SalesOrderDetail_SalesOrderHeader',
@join_articlename = @table2,
@join_filterclause = N'SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
İzinler
Yalnızca üyeleri sysadmin sabit sunucu rolü veya db_owner sabit veritabanı rolü yürütebilirsiniz sp_addmergefilter.
Ayrıca bkz.
Başvuru
sp_changemergefilter (Transact-sql)
sp_dropmergefilter (Transact-sql)
sp_helpmergefilter (Transact-sql)
Çoğaltma depolanan yordamlar (Transact-sql)
Kavramlar
Tanımla ve birleştirme makaleleri arasında birleştirme filtre Değiştir