
SQL Server merge replication: 巧用Merge Agent的hostname参数创建dynamic filter
热 荐
【字体:小 大】
SQL Server merge replication: 巧用Merge Agent的hostname参数创建dynamic filter
作者:- 文章来源:- 点击数:535 更新时间:2006-4-20 
我们知道,SQL Server 2000的Merge Replication支持dynamic filter的功能。如果我们有多个subscriber,每个subscriber只需要维护自己特定的数据,这时候我们只需创建一个publication, 然后利用dynamic filter的功能,把每个subscriber需要的特定数据复制过去。最常用的用于dynamic filter的系统函数是SUSER_SNAME() 和 HOST_NAME(),针对每个subscriber的merge agent连到publisher时,SQL Server会计算出么特定merge agent连接的SUSER_SNAME() 或 HOST_NAME()值,然后根据结果来过滤数据。
直接利用SUSER_SNAME() 或 HOST_NAME()时候,需要table中有相应SUSER_SNAME() 或 HOST_NAME()的值。比如如果我们的publisher server叫shanghai来维护所有的数据,三个subscriber分别叫nanjing, suzhou和hangzhou来维护各自的数据,如果我们希望利用HOST_NAME()把数据复制到三个subscriber, 我们的表中应该有一列来存HOST_NAME()的值,然后我们才能用dynamic filter如filter_column = host_name()来过滤数据:
create table orders(orderID int not null, filter_column char(20), Quantity int)
go
insert into orders values(1,nanjing,100)
insert into orders values(2,suzhou,200)
