WEB开发网
开发学院数据库MSSQL Server 一步步教你配置SQL SERVER合并复制(六)配置Publ... 阅读

一步步教你配置SQL SERVER合并复制(六)配置Publisher(下)

 2008-11-01 10:08:56 来源:WEB开发网   
核心提示:在弹出来的Add Filter这个页面,在左边的栏里你可以到表中的字段都罗列出来了,一步步教你配置SQL SERVER合并复制(六)配置Publisher(下),双击CityId列将它移到右边的Fileter statement,增加一个条件像CityId=1这样的,这样子的结果是无法创建Publication,因为H

在弹出来的Add Filter这个页面,在左边的栏里你可以到表中的字段都罗列出来了,双击CityId列将它移到右边的Fileter statement,增加一个条件像CityId=1这样的,这样的话就会减小订阅用户同步数据的数量,当然这里的值你必须定义一个常量,因此这个叫做Static Filter(静态查询).

一步步教你配置SQL SERVER合并复制(六)配置Publisher(下)

在我们的应用中表里的数据有几百万条是一件很正常的事,但有时候设备所需要的数据却仅仅是这几百万条中的几千条,这个时候静态过滤就派上它的用场了。我们继续,先将CityId=1删除掉因为我们有更重要的条件要应用。

如果你想减小客户端同步数据的数量,举个例子,就想我们这里的应用一样,每个用户只需同步他相应城市的数据,我们有字段CityId可以做到这个过滤,但我们不能用静态过滤,因为那只能过滤到一个城市。其实这个时候我们有个方法那就是用Parameterized Filter(参数查询).这里要求使用到 SQL SERVER的HOST_NAME()这个函数来实现这个过滤,只需将Replication对象的属性设置成HOST_NAME()所对应的值就可以了。你似乎可以写成下面这样的条件:

WHERE [CityId]=CONVERT(int,HOST_NAME())

不过很不幸的是,这样子的结果是无法创建Publication,因为HOST_NAME()的值是无法强制转换成Integer类型的。不过你可以这样写:

CONVERT(nchar,CityId)=HOST_NAME()

其实解决这个问题也不难,你可以执行sp_changemergearticle存储过程来替换下面的条件

WHERE [CityId]=CONVERT(int,HOST_NAME())

1 2 3 4  下一页

Tags:步步 配置 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接