Aracılığıyla paylaş


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

Bu konuda tanımlamak ve bir Parametreli satır filtre Değiştir açıklar SQL Server 2012kullanarak SQL Server Management Studioya Transact-SQL.

Tablo makaleleri oluştururken, Parametreli satır filtreleri kullanabilirsiniz. Bu filtreler kullanmak bir NEREYE yayımlanmaya uygun verileri seçmek için yan tümcesi. (Statik satır filtre gibi) bir hazır bilgi değeri yan tümcesinde belirtme yerine, belirlediğiniz biri veya her ikisi de aşağıdaki sistem işlevleri: suser_sname ve host_name. Daha fazla bilgi için bkz: Satır filtreleri parametreli.

Bu Konuda

  • Başlamadan Önce

    Sınırlamalar ve Kısıtlamalar

    Güvenlik

  • Tanımlamak ve bir Parametreli satır filtre, kullanarak:

    SQL Server Management Studio

    Transact-SQL

Başlamadan Önce

Sınırlamalar ve Kısıtlamalar

  • Ekleme, değiştirme veya Yayını abonelikleri başlatıldıktan sonra Parametreli satır filtresini silmek, 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

  • Performansı düşürmemek için işlev Parametreli satır filtre yan tümceleri, sütun adları gibi uyguladığınız değil öneririz LEFT([MyColumn]) = SUSER_SNAME(). host_name bir filtre yan tümcesi kullanırsanız ve host_name değer geçersiz veri türleri dönüştürme kullanarak dönüştürmek gerekli olabilir. Bu durum için en iyi yöntemler hakkında daha fazla bilgi için bkz: Bölüm "host_name() değeri geçersiz kılma" konudaki Parametreli satır süzgeçleri.

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 Parametreli satır filtrelerini silmek 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.

Parametreli satır filtre tanımlamak için

  1. Tarih Filtre tablosu satır Yeni Yayın Sihirbazı sayfası veya Filtre satırları sayfası **Yayını özellikleri - <yayın>**tıklatın Ekleve ardından Filtre Ekle.

  2. İçinde Filtre Ekle iletişim kutusunda, filtre aşağı açılan liste kutusundan bir tablo seçin.

  3. Bir filtre ifadesi oluşturmak Filtre ifadesi metin kutusu. Metin alanına doğrudan yazabilirsiniz ve ayrıca sürükleyip bırakın sütunlarından sütun liste kutusu.

    • Deyimi filtre metin biçiminde olan varsayılan metni içerir:

      SELECT <published_columns> FROM [tableowner].[tablename] WHERE
      
      SELECT <published_columns> FROM [tableowner].[tablename] WHERE
      
    • Varsayılan metin değiştirilemez; Filtre yan tümcesi sonra where anahtar sözcüğü standart sql sözdizimini kullanarak yazın. Parametreli filtre sistemi işlevini içeren HOST_NAME()ve/veya SUSER_SNAME(), ya da bir ya da her ikisi de bu fonksiyonların başvuran kullanıcı tanımlı bir işlev. Tam filtre yan tümcesi Parametreli satır filtre için bir örnek şudur:

      SELECT <published_columns> FROM [HumanResources].[Employee] WHERE LoginID = SUSER_SNAME()
      
      SELECT <published_columns> FROM [HumanResources].[Employee] WHERE LoginID = SUSER_SNAME()
      

      where 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. Veri aboneleri arasında nasıl paylaştırılır eşleşen seçeneği seçin:

    • Bu tablodan satır birden fazla abonelik gider

    • Bu tablodan satır yalnızca bir abonelik gider

    Seçerseniz Bu tablodan satır yalnızca bir abonelik gider, birleştirme çoğaltması optimize performans depolamak ve daha az meta veri işleme. Ancak, böyle bir şekilde bir satır birden fazla abone çoğaltılan verileri bölümlendirilir emin olmanız gerekir. Daha fazla bilgi için bkz: "Ayarı ' Bölüm seçenekleri'" bölümüne konudaki Parametreli satır süzgeçleri.

  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.

Parametreli satır filtresini 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 Edit Filter iletişim kutusunda, filtre değiştirme.

  3. Tamam’ı tıklatın.  

Parametreli satır filtresini 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.

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

Transact-SQL'i Kullanma

Parametreli satır filtre oluşturulabilir ve programlı olarak çoğaltma depolanmış yordamları kullanarak değiştirilebilir.

Bir birleştirme yayını bir makale için bir Parametreli satır filtre tanımlamak için

  • Yayını veritabanı üzerinde Yayımcı tarafında idam yürütmesp_addmergearticle (Transact-sql). Belirtmek @ yayın, yazı için bir ad @ makale, için yayımlanmış tablo @ source_object, tanımlar parametreli filtre where yan tümcesi @ subset_filterclause (dahil WHERE), ve değer aşağıdakilerden biri için @ partition_options, hangi Parametreli satır filtre sonuçlanacak bölümleme türünü açıklar:

    • 0 - Veya statik veri her bölümü için benzersiz bir alt verim değil makale için süzme (bir "örtüşen" Bölüm).

    • 1 - Sonuç bölümleri örtüşen ve Abone tarafında yapılan güncelleştirmeleri bir satırın ait olduğu bölümü değiştiremez.

    • 2 - Makale için süzme örtüşmeyen bölümleri verir, ancak birden çok aboneleri aynı bölüm alabilir.

    • 3 - Her abonelik için benzersiz makale verimleri örtüşmeyen bölümleri için filtreleme.

Parametreli satır filtre birleştirme yayını bir makale değiştirmek için

  1. Yayını veritabanı üzerinde Yayımcı tarafında idam sp_changemergearticle. Belirtmek @ yayın, @ makale, değeri subset_filterclauseiçin @ özellik, parametreli filtre tanımlar ifade @ değeri (dahil WHERE) bir 1 hem @ force_invalidate_snapshot ve @ force_reinit_subscription.

  2. Bu değişiklik de farklı bölümleme davranışı kaynaklanıyorsa, ardından idam sp_changemergearticle tekrar. Belirtmek @ yayın, @ makale, değeri partition_optionsiçin @ özellikve en uygun bölümlendirme seçeneği @ değeri, aşağıdakilerden biri olabilir:

    • 0 - Veya statik veri her bölümü için benzersiz bir alt verim değil makale için süzme (bir "örtüşen" Bölüm).

    • 1 - Sonuç bölümleri örtüşen ve Abone tarafında yapılan güncelleştirmeleri bir satırın ait olduğu bölümü değiştiremez.

    • 2 - Makale için süzme örtüşmeyen bölümleri verir, ancak birden çok aboneleri aynı bölüm alabilir.

    • 3 - Her abonelik için benzersiz makale verimleri örtüşmeyen bölümleri için filtreleme.

Örnek (Transact-sql)

Bu örnek, nerede makaleleri birleştirme filtreleri karşı bir dizi filtre birleştirme yayını makaleleri grubu tanımlar Employeetablo yani kendisini Parametreli satır filtre kullanarak filtre LoginID sütun. Eşitleme sırasında tarafından döndürülen değer host_name işlevi geçersiz kılındı. Daha fazla bilgi için bkz: konu host_name() değeri geçersiz kılma Parametreli satır süzgeçleri.

-- 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

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

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

Filtreler katılın

Parametreli satır süzgeçleri