Tanımla ve sütun filtresi değiştirme
Bu konuda tanımla ve sütun filtre 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
Tanımlamak ve bir sütunda değişiklik yapmak için filtre kullanarak:
SQL Server Management Studio
Transact-SQL
Başlamadan Önce
Sınırlamalar ve Kısıtlamalar
- Bazı sütunlar filtre uygulanamaz; daha fazla bilgi için bkz: Yayımlanmış veri süzme. Abonelikleri başlatıldıktan sonra Sütun filtresini değiştirirseniz, 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.
[Top]
SQL Server Management Studio Kullanarak
Sütun süzgeçlerini tanımlar Makaleler Yeni Yayın Sihirbazı sayfası. Yeni Yayın Sihirbazı'nı kullanma hakkında daha fazla bilgi için bkz: Yayın oluşturma.
Tanımlamak ve sütun filtreleri değiştirmek Makaleler sayfası Yayını özellikleri - <yayın > iletişim kutusu. Yayın ve makalesi özellikleri hakkında daha fazla bilgi için bkz: Yayın özelliklerini görüntüleme ve değiştirme.
Sütun filtre tanımlamak için
Tarih Makaleler sayfa Yeni Yayın Sihirbazı ' içindeki filtre uygulanacak tablo genişletin nesneleri yayımlamak için bölmesi.
Filtre uygulamak istediğiniz her sütunun yanındaki onay kutusunu temizleyin.
Sütun filtresini değiştirmek için
Tarih Makaleler sayfası Yayını özellikleri - <yayın > iletişim kutusunda, içinde filtre uygulanacak tablo genişletin nesneleri yayımlamak için bölmesi.
Filtre ve makale dahil gereken her sütun için onay kutusunun seçili olduğundan emin olun istediğiniz her sütunun yanındaki onay kutusunu temizleyin.
Tamam’ı tıklatın.
[Top]
Transact-SQL'i Kullanma
Tablo makaleleri oluştururken, makalede eklemek ve makale tanımlandıktan sonra sütunları değiştirmek için hangi sütunların tanımlayabilirsiniz. Oluşturmak ve çoğaltma depolanmış yordamları kullanarak programsal süzülmüş sütunları değiştirme.
[!NOT]
Aşağıdaki yordamlarda, temel tablo değişmedi varsayılmıştır. Yayımlanmış tablolara veri tanım dili (ddl) değişiklikler çoğaltma hakkında daha fazla bilgi için bkz: Yayını veritabanları üzerinde şeması değişiklikler yapmak.
Bir anlık görüntü veya işlem yayın yayımlanmış bir makaleye sütun filtre tanımlamak için
Makale filtre tanımlar. Daha fazla bilgi için, bkz. Bir makale tanımlamak.
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_articlecolumn. Bu katmak ya da yazıdan kaldırmak için sütunları tanımlar.
Çok sayıda sütun içeren bir tablodan yalnızca birkaç sütun yayımlamak, idam sp_articlecolumn eklenen her sütun için bir kez. Sütun adını belirtin @ sütun bir ekleme için @ işlemi.
Çok sayıda sütun içeren bir tablo sütunları çoğunu yayımlama, yürütme sp_articlecolumn, bir değer belirterek boş için @ sütun bir ekleme için @ işlemi tüm sütunları eklemek için. Ardından idam sp_articlecolumn, dışarıda her sütun için bir değer belirterek bir kez bırak için @ işlemi ve dışlanan sütun adını @ sütun.
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_articleview. Yayın adı belirtmek @ yayın ve süzülmüş makale adı @ makale. Bu filtre uygulanmış bir makale eşitleme nesneleri oluşturur.
Bir anlık görüntü veya işlem yayın yayımlanmış bir makale için ek sütunlar eklemek için sütun filtresini değiştirmek için
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_articlecolumn eklenen her sütun için bir kez. Sütun adını belirtin @ sütun bir ekleme için @ işlemi.
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_articleview. Yayın adı belirtmek @ yayın ve süzülmüş makale adı @ makale. Yayın varolan abonelikleri varsa, değeri belirtmeniz 1 için @ change_active. Bu filtre uygulanmış bir makale eşitleme nesneleri oluşturur.
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.
Abonelikleri yeniden. Daha fazla bilgi için, bkz. Abonelikleri yeniden başlatmak.
Bir anlık görüntü veya işlem yayın yayımlanmış bir makaleye sütun kaldırmak için sütun filtresini değiştirmek için
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_articlecolumn kaldırılan her sütun için bir kez. Sütun adını belirtin @ sütun bir bırak için @ işlemi.
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_articleview. Yayın adı belirtmek @ yayın ve süzülmüş makale adı @ makale. Yayın varolan abonelikleri varsa, değeri belirtmeniz 1 için @ change_active. Bu filtre uygulanmış bir makale eşitleme nesneleri oluşturur.
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.
Abonelikleri yeniden. Daha fazla bilgi için, bkz. Abonelikleri yeniden başlatmak.
Bir birleştirme yayını yayımlanmış bir makaleye sütun filtre tanımlamak için
Makale filtre tanımlar. Daha fazla bilgi için, bkz. Bir makale tanımlamak.
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_mergearticlecolumn. Bu katmak ya da yazıdan kaldırmak için sütunları tanımlar.
Çok sayıda sütun içeren bir tablodan yalnızca birkaç sütun yayımlamak, idam sp_mergearticlecolumn eklenen her sütun için bir kez. Sütun adını belirtin @ sütun bir ekleme için @ işlemi.
Çok sayıda sütun içeren bir tablo sütunları çoğunu yayımlama, yürütme sp_mergearticlecolumn, bir değer belirterek boş için @ sütun bir ekleme için @ işlemi tüm sütunları eklemek için. Ardından idam sp_mergearticlecolumn, dışarıda her sütun için bir değer belirterek bir kez bırak için @ işlemi ve dışlanan sütun adını @ sütun.
Yayımlanan bir birleştirme yayını bir makale için ek sütunlar eklemek için sütun filtresini değiştirmek için
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_mergearticlecolumn eklenen her sütun için bir kez. Sütun adını belirtin @ sütun, değeri ekleme için @ işlemi bir 1 hem @ force_invalidate_snapshot ve @ force_reinit_subscription.
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.
Abonelikleri yeniden. Daha fazla bilgi için, bkz. Abonelikleri yeniden başlatmak.
Bir birleştirme yayını yayımlanmış bir makaleye sütun kaldırmak için sütun filtresini değiştirmek için
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_mergearticlecolumn kaldırılan her sütun için bir kez. Sütun adını belirtin @ sütun, değeri bırak için @ işlemi bir 1 hem @ force_invalidate_snapshot ve @ force_reinit_subscription.
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.
Abonelikleri yeniden. Daha fazla bilgi için, bkz. Abonelikleri yeniden başlatmak.
Örnek (Transact-sql)
Bu işlem çoğaltma örnek DaysToManufacturesütunu temel alan bir makale kaldırılır Producttablosu.
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 CreditCardApprovalCodesütunu temel alan bir makale kaldırılır SalesOrderHeadertablosu.
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
[Top]