Aracılığıyla paylaş


Tanımla ve statik satır filtre Değiştir

Bu konuda tanımla ve statik satır filtre içinde değiştirme açıklar SQL Server 2012kullanarak SQL Server Management Studioya Transact-SQL.

Bu Konuda

  • Başlamadan Önce

    Sınırlamalar ve Kısıtlamalar

    Öneriler

  • Tanımla ve statik 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 statik 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.

  • Yayını eşler arası işlem çoğaltma için etkinleştirilmiş tablolar filtre uygulanamıyor.

Ö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 statik satır filtre 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.

Statik satır 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 > iletişim kutusunda yaptığınız işlemden yayın türüne bağlıdır:

    • Bir anlık görüntü veya işlem yayın için tıklayın Ekle.

    • Birleştirme yayını için tıklayın Ekleve'yi 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 alanı. Metin alanına doğrudan yazabilirsiniz ve ayrıca sürükleyip bırakın sütunlarından sütun liste kutusu.

    [!NOT]

    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. Yayını bir Oracle Publisher'dan ise, where yan tümcesi Oracle sözdizimi ile uyumlu olmalıdır.

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

      SELECT <published_columns> FROM [schema].[tablename] WHERE
      
      SELECT <published_columns> FROM [schema].[tablename] WHERE
      
    • Varsayılan metin değiştirilemez; Filtre yan tümcesi sonra where anahtar sözcüğü standart sql sözdizimini kullanarak yazın. Tam filtre yan tümcesi gibi görünür:

      SELECT <published_columns> FROM [HumanResources].[Employee] WHERE [LoginID] = 'adventure-works\ranjit0'
      
      SELECT <published_columns> FROM [HumanResources].[Employee] WHERE [LoginID] = 'adventure-works\ranjit0'
      
    • Statik satır filtre, kullanıcı tanımlı bir işlev de ekleyebilirsiniz. Tam filtre yan tümcesi için statik satır filtre ile kullanıcı tanımlı bir işlev gibi görünür:

      SELECT <published_columns> FROM [Sales].[SalesOrderHeader] WHERE MyFunction([Freight]) > 100
      
      SELECT <published_columns> FROM [Sales].[SalesOrderHeader] WHERE MyFunction([Freight]) > 100
      
  4. Tamam’ı tıklatın.

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

Statik 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 > iletişim kutusunda, 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.

Statik 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 > iletişim kutusunda, 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

Tablo makaleleri oluştururken, filtre satırları dışarı-in bir makale için bir where yan tümcesi tanımlayabilirsiniz. O tanımlandıktan sonra bir satır filtre de değiştirebilirsiniz. Statik satır filtre oluşturulabilir ve programlı olarak çoğaltma depolanmış yordamları kullanarak değiştirilebilir.

Anlık görüntü veya işlem yayın için statik satır filtre tanımlamak için

  1. Makale filtre tanımlar. Daha fazla bilgi için, bkz. Bir makale tanımlamak.

  2. Yayını veritabanı üzerinde Yayımcı tarafında idam sp_articlefilter (Transact-sql). Makale için bir ad belirtin @ makale, yayın adı @ yayın, filtre için bir ad @ Filtre_adıve filtre yan tümcesi @ filter_clause (dahil WHERE).

  3. Sütun filtresini hala tanımlanması gerekir, bkz: Tanımla ve sütun filtresi değiştirme. Aksi halde, idam sp_articleview (Transact-sql). Yayın adı belirtmek @ yayın, süzülmüş makale adı @ makaleve adım 2'de belirtilen filtre yan tümcesi @ filter_clause. Bu filtre uygulanmış bir makale eşitleme nesneleri oluşturur.

Anlık görüntü veya işlem yayın için statik satır filtresini değiştirmek için

  1. Yayını veritabanı üzerinde Yayımcı tarafında idam sp_articlefilter (Transact-sql). Makale için adını belirtmek @ makale, yayın adı @ yayın, yeni filtre için bir ad @ Filtre_adıve yeni filtre yan tümcesi @ filter_clause (dahil WHERE). Bu değişiklik mevcut abonelikleri verileri geçersiz çünkü değeri belirtmeniz 1 için @ force_reinit_subscription.

  2. Yayını veritabanı üzerinde Yayımcı tarafında idam sp_articleview (Transact-sql). Yayın adı belirtmek @ yayın, süzülmüş makale adı @ makaleve adım 1'de belirtilen filtre yan tümcesi @ filter_clause. Bu filtre uygulanmış bir makaleye tanımlar görünümü oluşturur.

  3. Güncellenme Zamanı bir anlık görüntü oluşturmak yayını anlık görüntü Aracısı iş yeniden çalıştırın. Daha fazla bilgi için, bkz. Oluşturun ve başlangıç anlık görüntüsü Uygula.

  4. Abonelikleri yeniden. Daha fazla bilgi için, bkz. Abonelikleri yeniden başlatmak.

Anlık görüntü veya işlem yayın için statik satır filtresini silmek için

  1. Yayını veritabanı üzerinde Yayımcı tarafında idam sp_articlefilter (Transact-sql). Makale için bir ad belirtin @ makale, yayın adı @ yayın, null değeri @ Filtre_adı, null değeri @ filter_clause. Bu değişiklik mevcut abonelikleri verileri geçersiz çünkü değeri belirtmeniz 1 için @ force_reinit_subscription.

  2. Güncellenme Zamanı bir anlık görüntü oluşturmak yayını anlık görüntü Aracısı iş yeniden çalıştırın. Daha fazla bilgi için, bkz. Oluşturun ve başlangıç anlık görüntüsü Uygula.

  3. Abonelikleri yeniden. Daha fazla bilgi için, bkz. Abonelikleri yeniden başlatmak.

Statik satır filtre birleştirme yayını tanımlamak için

  1. Yayını veritabanı üzerinde Yayımcı tarafında idam yürütmesp_addmergearticle (Transact-sql). Filtre yan tümcesi belirtme @ subset_filterclause (değil dahil WHERE). Daha fazla bilgi için, bkz. Bir makale tanımlamak.

  2. Sütun filtresini hala tanımlanması gerekir, bkz: Tanımla ve sütun filtresi değiştirme.

Birleştirme yayını için statik satır filtresini değiştirmek için

  1. Yayını veritabanı üzerinde Yayımcı tarafında idam sp_changemergearticle (Transact-sql). Yayını adını belirtin @ yayın, süzülmüş makale adı @ makale, değeri subset_filterclause için @ özellikve yeni filtre yan tümcesi @ değeri (değil dahil WHERE). Çünkü bu değişiklik mevcut abonelikleri verileri geçersiz hale gelecektir, için 1 değeri belirtmeniz @ force_reinit_subscription.

  2. Güncellenme Zamanı bir anlık görüntü oluşturmak yayını anlık görüntü Aracısı iş yeniden çalıştırın. Daha fazla bilgi için, bkz. Oluşturun ve başlangıç anlık görüntüsü Uygula.

  3. Abonelikleri yeniden. Daha fazla bilgi için, bkz. Abonelikleri yeniden başlatmak.

Örnekler (Transact-SQL)

Bu işlem çoğaltma örnek makaleyi tüm discontinued ürün kaldırmak için yatay olarak filtre uygulanır.

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

Bu birleştirme çoğaltma örnek makaleleri yalnızca belirli bir satışçıya ait satırları döndürmek için yatay olarak filtre uygulanır. Birleşim filtre de kullanılır. Daha fazla bilgi için, bkz. Tanımla ve birleştirme makaleleri arasında birleştirme 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

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

Ayrıca bkz.

Kavramlar

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

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

Yayımlanmış veri süzme

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