sp_addmergefilter (Transact-SQL)

Bir başka bir birleşim dayalı bir bölüm oluşturmak için yeni bir birleştirmek filtre ekler tablo.Bu saklı yordam, yayın veritabanı üzerinde yayımcı adresindeki yürütülür.

Konu bağlantısı simgesiTransact-sql sözdizimi 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'
    Is the name of the publication in which the merge filter is being added.publication is sysname, with no default.

  • [ @article= ] 'article'
    Is the name of the article on which the merge filter is being added.article is sysname, with no default.

  • [ @filtername= ] 'filtername'
    Is the name of the filter.filtername is a required parameter.filternameis sysname, with no default.

  • [ @join_articlename= ] 'join_articlename'
    Is the parent article to which the child article, specified by article, must be joined using the join clause specified by join_filterclause, in order to determine the rows in the child article that meet the filter criterion of the merge filter.join_articlename is sysname, with no default.Makale tarafından verilen yayın olması publication.

  • [ @join_filterclause= ] join_filterclause
    Is the join clause that must be used to join the child article specified by articleand parent article specified by join_article, in order to determine the rows qualifying the merge filter.join_filterclause is nvarchar(1000).

  • [ @join_unique_key= ] join_unique_key
    Specifies if the join between child article articleand parent article join_articleis one-to-many, one-to-one, many-to-one, or many-to-many.join_unique_key is int, with a default of 0.0 çok bir veya çok çok birleştirmek gösterir.1 bire bir veya bir-çok birleştirmek gösterir.Bu değer 1 katılan sütunlar form içinde benzersiz bir anahtar ne zaman join_article, veya join_filterclause arasında bir yabancı anahtar olarak article ve bir birincil anahtar olarak join_article.

    Dikkat notuDikkat

    Bu parametre yalnızca ayarlamak 1 katılan sütun temel sınırlama varsa, temel alınan tablo benzersizliğini garanti üst makale.If join_unique_key is set to 1 incorrectly, non-convergence of data may occur.

  • [ @force_invalidate_snapshot= ] force_invalidate_snapshot
    Acknowledges that the action taken by this stored procedure may invalidate an existing snapshot.force_invalidate_snapshot is a bit, with a default 0.

    0 birleştirme makale değişiklikleri anlık görüntü geçersiz olarak neden olmaz belirtir.Saklı yordam, yeni bir anlık görüntü gerektirecek bir değişiklik algılarsa, bir hata ortaya çıkar ve hiçbir değişiklik yapılmayacak.

    1 geçersiz olabilir 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 izin verir ve yeni bir anlık görüntü oluşturulan belirtir.

  • [ @force_reinit_subscription= ] force_reinit_subscription
    Acknowledges that the action taken by this stored procedure may require existing subscriptions to be reinitialized.force_reinit_subscription is a bit, with a default of 0.

    0 birleştirme makale değişiklikleri abonelik yeniden neden olmaz belirtir.Saklı yordam yeniden için abonelikleri değişikliği gerektirecek algılarsa, bir hata ortaya çıkar ve hiçbir değişiklik yapılmayacak.

    1 yeniden, varolan abonelikleri birleştirme makale değişiklikler neden olacak belirtir ve gerçekleşmesi abonelik reinitialization izni verir.

  • [ @filter_type= ] filter_type
    Specifies the type of filter being added.filter_type is tinyint, and can be one of the following values.

    Değer

    Açıklama

    1

    Yalnızca filtre katılın.Desteklemek için gereken SQL Server Compact 3.5 SP1 aboneleri.

    2

    Yalnızca mantıksal kaydı ilişki.

    3

    Her ikisi de birleşim filtresi ve mantıksal kayıt ilişki.

    Daha fazla bilgi için bkz: Değişiklikleri'mantıksal kayıtları ile ilgili satırları gruplandırma.

Dönüş Kodu Değerleri

0 (başarılı) veya 1 (başarısız)

Açıklamalar

sp_addmergefilter birleştirmede kullanılan çoğaltma.

sp_addmergefilter tablo makaleleri ile yalnızca kullanılabilir.Görünüm ve dizinli görünüm makaleleri desteklenmez.

This procedure can also be used to add a logical relationship between two articles that may or may not have a join filter between them.filter_type is used to specify if the merge filter being added is a join filter, a logical relation, or both.

Mantıksal kayıtlarını kullanmak için yayın ve makaleler bir dizi gereksinimleri karşılamalıdır.Daha fazla bilgi için bkz: Değişiklikleri'mantıksal kayıtları ile ilgili satırları gruplandırma.

Genellikle, bu seçenek yayımlanmış bir birincil anahtarı yabancı anahtar başvurusu içeren bir makale için kullanılan tablove birincil anahtar tablo onun makalesinde tanımlanmış bir filtre vardır.Satırların alt küme küme kümesini birincil anahtar için abone çoğaltılan yabancı anahtar satırları belirlemek için kullanılır.

Ekleyemez, bir birleşim filtresi kaynak tablolar her iki makaleler için aynı tablo nesne adını paylaşırken arasında iki makaleleri yayımlandı.Böyle bir durumda, her iki tablo farklı şemalar tarafından sahip olunan ve benzersiz makale adları, oluşturulmasını bile birleştirmek filtresi başarısız olur.

Her iki parametreli satır filtresi ve birleştirmek filtresi kullanılan bir tablo makale üzerinde çoğaltma bir satır içinde bir abonenin bölüm ait olup olmadığını belirler.Bunu filtre işlevni değerlendirerek yapar veya birleşim filtresi (kullanarak or işleç), iki koşul kesişim değerlendirme yerine (kullanarak ve işleç).

Ö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.BusinessEntityID = 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ü olabilir yürütmek sp_addmergefilter.