设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 数据库开发 >> SQL Server merge replication: 巧用Merge Agent的hostname参数创建dynamic filter
精品推荐
数据库开发点击TOP10
·MYSQL 新版出现 Client does not support authentication protocol requested by server; consider upgrading MySQL client解决办法
·生成助记码(取汉字的第一个字母)
·ORA-01034错误的解决办法
·ORACLE数据库管理员的职责
·将DW数据窗口导出为EXCEL文件的方法(整理)
·Oracle中分区表的使用
·SQL Server 2000+ MS WIN2003群集服务配置
·SQL中UNION 与 UNION ALL 的区别
·ORA-00257: archiver error. Connect internal only, until freed.
·Oracle备份与恢复案例
编程开发点击TOP10
·数字小键盘指法练习
·ASP.NET 程序中常用的三十三种代码
·用C语言编通讯录程序(初学者级别的)
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·Modem 常用AT指令集
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

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

作者: 来源:网络文章 时间:2005-12-17 21:03:59

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

我们知道,SQL Server 2000Merge Replication支持ASP">dynamic filter的功能。如果我们有多个subscriber,每个subscriber只需要维护自己特定的数据,这时候我们只需创建一个publication, 然后利用dynamic filter的功能,把每个subscriber需要的特定数据复制过去。最常用的用于dynamic filter的系统函数是SUSER_SNAME() HOST_NAME(),针对每个subscribermerge agent连到publisher时,SQL Server会计算出么特定merge agent连接的SUSER_SNAME() HOST_NAME()值,然后根据结果来过滤数据。XML:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

直接利用SUSER_SNAME() HOST_NAME()时候,需要table中有相应SUSER_SNAME() HOST_NAME()的值。比如如果我们的publisher servershanghai来维护所有的数据,三个subscriber分别叫nanjing, suzhouhangzhou来维护各自的数据,如果我们希望利用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, 只需为nanjingmerge agent添加“-hostname=1”参数即可。

 

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

 

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

共2页 9 7 [1] [28 :>

SQL Server merge replication: 巧用Merge Agent的hostname参数创建dynamic filter 相关文章:
SQL Server merge replication: 巧用Merge Agent的hostname参数创建dynamic filter 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com