Aracılığıyla paylaş


Tanımla ve birleştirme makaleleri arasında birleştirme filtre Değiştir

Bu konuda tanımla ve birleştirme makaleleri arasında birleştirme filtre değiştirme açıklar SQL Server 2012kullanarak SQL Server Management Studioya Transact-SQL. Genellikle birlikte parametreli filtreleri ile diğer ilişkili tablo makaleleri bölümleme tablosu genişletmek için kullanılan çoğaltma destekler birleştirme filtreleri birleştirme.

Bu Konuda

  • Başlamadan Önce

    Sınırlamalar ve Kısıtlamalar

    Öneriler

  • Tanımlamak ve kullanarak birleştirme makaleleri arasında birleştirme filtre değiştirmek için:

    SQL Server Management Studio

    Transact-SQL

Başlamadan Önce

Sınırlamalar ve Kısıtlamalar

  • Birleşim filtre oluşturmak için yayının en az iki ilişkili tablonun içermelidir. Birleşim filtre satır filtre uzanır; Bu nedenle önce sen-ebilmek erişmek için başka bir tablo birleştirme filtre bir tabloyu satır filtre tanımlamalısınız. Bir birleşim filtre tanımlandıktan sonra yayının ek ilişkili tablolar içeriyorsa, bu birleşim filtre ile başka bir birleşim filtre genişletebilirsiniz.

  • Ekleme, değiştirme veya Yayını abonelikleri başlatıldıktan sonra birleşim filtre silme, yeni bir anlık görüntü oluşturmak ve değişiklik yaptıktan sonra tüm abonelikler yeniden gerekir. Özellik değişikliklerini gereksinimleri hakkında daha fazla bilgi için bkz: Değişiklik yayın ve makalesi özellikleri.

Öneriler

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

SQL Server Management Studio Kullanarak

Tanımlamak, değiştirmek ve üzerinde birleşim filtreleri silme Filtre tablosu satır sayfa yeni yayın sihirbazını veya Filtre satırları sayfası Yayını özellikleri - <yayın > iletişim kutusu. Sihirbaz ve iletişim kutusuna erişme hakkında daha fazla bilgi için bkz: Yayın oluşturmave Yayın özelliklerini görüntüleme ve değiştirme.

Birleşim filtre tanımlamak için

  1. Tarih Filtre tablosu satır sayfa yeni yayın sihirbazını veya Filtre satırları sayfası Yayını özellikleri - <yayın>, varolan satır filtresini seçin veya birleştirme filtre Süzülmüş tablolar bölmesi.

  2. Tıklayın Ekleve'yi Ekle Katıl uzatma seçili filtre için.

  3. Birleşim deyimi oluşturma: seçin ya da Use deyimi oluşturmak için oluşturucunun veya birleşim deyimi elle yazmak.

    • Oluşturucu kullanmayı seçerseniz, kılavuzdaki sütunları kullanın (birlikte, süzülmüş tablo sütun, Operator, ve Katılınan tablo sütun) bir birleşim deyimi oluşturmak için.

      Kılavuzdaki her sütun iki sütun ve bir işleç seçmek izin bir açılan kutu içerir (=, <>, <=, <, >=, >, ve gibi). Sonuçları görüntülenir Önizleme metin alanı. Birleştirme birden fazla çift sütun içeriyorsa, bağlaç seçin (veya or) dan birlikte sütun, sonra iki daha fazla sütun ve bir işleç girin.

    • Birleşim deyimi deyim elle yazmak için seçerseniz, yazmak birleşim deyimi metin alanı. Kullanım süzülmüş tablo sütunları liste kutusu ve Katılınan tablo sütunları liste kutusunda sütunlar için sürükleyip JOIN deyimi metin alanı.

    • Tam birleşim deyimi gibi görünür:

      SELECT <published_columns> FROM [Sales].[SalesOrderHeader] INNER JOIN [Sales].[SalesOrderDetail] ON [SalesOrderHeader].[SalesOrderID] = [SalesOrderDetail].[SalesOrderID]
      
      SELECT <published_columns> FROM [Sales].[SalesOrderHeader] INNER JOIN [Sales].[SalesOrderDetail] ON [SalesOrderHeader].[SalesOrderID] = [SalesOrderDetail].[SalesOrderID]
      

      Birleştirme yan tümcesi, iki bölümlü adlandırma kullanmalısınız; kullanmalısınızüç bölümlü adlandırma ve four-part adlandırma desteklenmez.

  4. Birleştirme seçenekleri belirtin:

    • Seçin, filtre uygulanmış tablosunda (üst tablo) katılmak sütun benzersiz ise, benzersiz anahtar.

      Dikkat notuDikkat

      Bu seçeneğin seçilmesi, birleşim filtre alt ve üst tablolarda arasındaki ilişki bire bir ya da bir çok olduğunu gösterir. Sadece özgünlüğü Teminatlar alt tablodaki birleştirme sütunu bir kısıtlama varsa bu seçeneği seçin. Seçeneği yanlış olarak ayarlanırsa, yakınsaması veri oluşabilir.

    • Varsayılan olarak, birleştirme çoğaltma işlemleri değişikliklerini satır tarafından aralıklarla eşitleme sırasında. Süzülmüş tablo ve bir birim olarak işlenen birleştirilen tablo satır değişiklikleri ile ilgili için seçin mantıksal kaydı ( Microsoft   SQL Server 2005 ve sonraki sürümleri). Bu seçenek, yalnızca mantıksal kayıtları kullanma makale ve yayını gereksinimleri karşılanırsa kullanılabilir. Daha fazla bilgi için bkz: Bölüm "Düşünceleri için kullanarak mantıksal kayıtları" in Grup değişiklikleri'mantıksal kayıtları ile ilgili satırları.

  5. Tamam’ı tıklatın.  

  6. Eğer Yayını özellikleri - <yayın > iletişim kutusu'yı Tamam kaydetmek ve iletişim kutusunu kapatın.

Birleşim filtre değiştirmek için

  1. Tarih Filtre tablosu satır sayfa yeni yayın sihirbazını veya Filtre satırları sayfası Yayını özellikleri - <yayın>, bir filtre seçin Süzülmüş tablolar bölmesi ve sonra düzenleme.

  2. İçinde Katıl Düzenle iletişim kutusunda, filtre değiştirme.

  3. Tamam’ı tıklatın.  

Birleşim filtre silmek için

  • Tarih Filtre tablosu satır sayfa yeni yayın sihirbazını veya Filtre satırları sayfası Yayını özellikleri - <yayın>, bir filtre seçin Süzülmüş tablolar bölmesi ve sonra silmek. Sildiğiniz birleşim filtre kendisi tarafından diğer birleşimler genişletilmiş ise, bu birleşimler de silinir.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Transact-SQL'i Kullanma

Bu yordamlar, bu makale ve ilgili alt makaleleri arasında birleştirme filtreleri ile bir üst yazı parametreli filtre gösterir. Birleştirme filtre tanımlanabilir ve çoğaltma depolanmış yordamları kullanarak programsal güncellenmiştir.

İlgili makaleleri birleştirme yayını bir makale filtre genişletmek için birleşim filtre tanımlamak için

  1. Ana madde olarak da bilinen olan, katılmış makale için süzme tanımlayın.

  2. Yayını veritabanı üzerinde Yayımcı tarafında idam yürütmesp_addmergearticle (Transact-sql)olarak da bilinen çocuk makaleler, yayını olan bir veya daha fazla ilgili makaleleri tanımlamak için. Daha fazla bilgi için, bkz. Bir makale tanımlamak.

  3. Yayını veritabanı üzerinde Yayımcı tarafında idam sp_addmergefilter (Transact-sql). Belirtmek @ yayın, bu filtre için benzersiz bir ad @ FiltreAdı, adım 2 için oluşturulan alt makale adı @ makale, için katılmış üst makale adı @ join_articlename, ve değer aşağıdakilerden biri için @ join_unique_key:

    • 0 -üst ve alt makaleleri arasında çok bir veya çok çok birleşim gösterir.

    • 1 -üst ve alt makaleleri arasında bire bir veya bir-çok birleştirme gösterir.

    Bu iki makaleleri arasında birleştirme filtre tanımlar.

    Dikkat notuDikkat

    Sadece @ join_unique_key için 1 özgünlüğü Teminatlar üst yazı için temel tablodaki birleştirme sütunu bir kısıtlama varsa. Eğer @ join_unique_key ayarı 1 yanlış yakınsaması veri oluşabilir.

Örnekler (Transact-SQL)

Bu örnek, birleştirme yayını bir makale tanımlar nerede SalesOrderDetailtablo makale filtre karşı SalesOrderHeadertablo yani kendisini statik satır filtre kullanarak filtre uygulanmış. Daha fazla bilgi için, bkz. Tanımla ve statik satır filtre Değiştir.

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

Bu örnek, nerede makaleleri birleştirme filtreleri karşı bir dizi filtre birleştirme yayını makaleleri grubu tanımlar Employeekendisini değerini Parametreli satır filtre kullanarak filtre uygulanmış olan tablo host_name içinde LoginID sütun. Daha fazla bilgi için, bkz. Tanımla ve birleştirme makalesi Parametreli satır filtre Değiştir.

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. For information about 
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".

--Add a new merge publication.
DECLARE @publicationdb AS sysname;
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @filter AS sysname;
DECLARE @schema_hr AS sysname;
DECLARE @schema_sales AS sysname;

SET @publicationdb = N'AdventureWorks2012';
SET @publication = N'AdvWorksSalesPersonMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesPerson';
SET @filter = N'SalesPerson_Employee';
SET @schema_hr = N'HumanResources';
SET @schema_sales = N'Sales';

USE [AdventureWorks2012];

-- Enable AdventureWorks2012 for merge replication.
EXEC sp_replicationdboption
  @dbname = @publicationdb,
  @optname = N'merge publish',
  @value = N'true';  

-- Create new merge publication with Subscriber requested snapshot
-- and using the default agent schedule. 
EXEC sp_addmergepublication 
  @publication = @publication, 
  @description = N'Merge publication of AdventureWorks2012.', 
  @allow_subscriber_initiated_snapshot = N'true',
  @publication_compatibility_level = N'90RTM';

-- Create a new snapshot job for the publication, using the default schedule.
-- Pass credentials at runtime using sqlcmd scripting variables.
EXEC sp_addpublication_snapshot 
  @publication = @publication, 
  @job_login = $(login), 
  @job_password = $(password);

-- Add an article for the Employee table, 
-- which is horizontally partitioned using 
-- a parameterized row filter.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table1, 
  @source_owner = @schema_hr, 
  @source_object = @table1, 
  @type = N'table', 
  @description = 'contains employee information', 
  @subset_filterclause = N'[LoginID] = HOST_NAME()';

-- Add an article for the SalesPerson table, 
-- which is partitioned based on a join filter.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table2, 
  @source_owner = @schema_sales, 
  @source_object = @table2, 
  @type = N'table', 
  @description = 'contains salesperson information';

-- Add a join filter between the two articles.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table1, 
  @filtername = @filter, 
  @join_articlename = @table2, 
  @join_filterclause = N'[Employee].[BusinessEntityID] = [SalesPerson].[SalesPersonID]', 
  @join_unique_key = 1, 
  @filter_type = 1;
GO

-- Start the agent job to generate the full snapshot for the publication.
-- The filtered data snapshot is generated automatically the first time 
-- the subscription is synchronized. 
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesPersonMerge';

EXEC sp_startpublication_snapshot 
  @publication = @publication;
GO

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Ayrıca bkz.

Kavramlar

Filtreler katılın

Parametreli satır süzgeçleri

Değişiklik yayın ve makalesi özellikleri

Birleştirme çoğaltması yayımlanmış veri süzme

Tanımla ve birleştirme makaleleri arasında birleştirme filtre Değiştir

Yineleme sistem saklı yordamlar kavramları

Birleştir tablo makaleleri arasındaki mantıksal kayıt ilişki tanımla

Tanımla ve birleştirme makalesi Parametreli satır filtre Değiştir