分享
 
 
 

SQL Server merge replication: 巧用Merge Agent的hostname参数创建dynamic filter

王朝mssql·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

我们知道,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)

insert into orders values(3,’hangzhou’,120)

insert into orders values(4,’hangzhou’,100)

go

但是,如果我们的表中的数据没有恰好和SUSER_SNAME() 或 HOST_NAME()匹配的,我们该怎样来做dynamic filter呢?

比如下表,只有一个zoneID可以用来区分不同subscriber需要的数据,但是它的值和SUSER_SNAME() 或 HOST_NAME()都不同。

create table orders(orderID int not null, zoneID nvarchar(5), Quantity int)

go

insert into orders values(1,N'1',100)

insert into orders values(2,N'2',200)

insert into orders values(3,N'3',120)

insert into orders values(4,N'3',100)

要为这种数据做dynamic filter, 我们可以利用Merge Agent 的一个参数, hostname, 来实现。SQL Server Books Online没有很好解释该参数的用法。当我们没有为merge agent指定该参数时候,针对merge agent连接 的host_name()函数返回merge agent 所在服务器的计算机名称;当我们为merge agent指定了该参数时候,host_name()函数返回hostname参数指定的价值。

比如,如果我们想把zoneID = N’1’的记录复制到nanjing, 我们仍然可以用”zoneID = host_name()” filter, 只需为nanjing的merge agent添加“-hostname=1”参数即可。

为了添加这个参数,右键单击merge agent, 选择Agent Properties, 选择steps选项页,双击Run agent,然后在Command最后添加”-hostname 1”即可。

关于merge agent的所有可用参数,见MSDN.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有