一步步教你配置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(静态查询).
在我们的应用中表里的数据有几百万条是一件很正常的事,但有时候设备所需要的数据却仅仅是这几百万条中的几千条,这个时候静态过滤就派上它的用场了。我们继续,先将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())
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接