sql server 合并复制(Merge Replication)

[ 2006-04-23 22:46:08 | 作者: progame ]
文字大小: | |
sql server的复制(replication)真是会让人头疼,尤其是数据结构改变后的同步

先说一下如何单向同步,在代理属性中第二步的run agent中通过加命令参数exchangetype来改变,1为uploading,表示只从订阅者上传到发布者,2为downloading,表示只从发布者更新到订阅者,3为bidirectional,表示双向同步,即默认的同步方式。

如果在数据库结构改变后继续同步,可以使用取消同步之前生成的sql脚本一次运行(但我怀疑这样是有问题的),前提是包括订阅脚本一起运行,否则的话就必须在订阅时选择初始化结构和数据,因为不然的话,会报说发布的数据库中没有唯一的rowguidcol,我就奇怪了,为什么不能在没有任何订阅者的情况下做一个快照,这样的话就会自动添加这个列了。

因为我们更新数据库结构时,会将rowguidcol这个列给删除的,这样就导致我下一次再建立同步时又得初始化所有的订阅者,然而我并不希望publisher的数据都更新到subscriber,使用行过滤的办法的话我又得对每个subscriber做不同的发布,这真是一个难题。

解决方法,在建立数据库时,添加属性rowguidcol的列,并且设置唯一性索引,在订阅时,选择订阅数据库已有架构和数据,这样就不会把订阅端的数据冲掉了,但前提是publisher和subscriber的对应同一主键的rowguidcol的值要一样,否则更新时会导致冲突。
评论Feed 评论Feed: /feed.asp?q=comment&id=23

浏览模式: 显示全部 | 评论: 3 | 引用: 0 | 排序 | 浏览: 2629
引用 bloom
[ 2006-05-21 02:08:49 ]
你现在不用vb了吗?
[最后修改由 progame, 于 2006-05-21 22:48:50]
引用 kyozz601*
[ 2008-09-10 16:28:59 ]
高手! 请教个问题 我现在在服务器和一台客户机之间做合并订阅, 服务器在机房 网速慢,数据库6G左右。
我看了文档后发现可以跳过初始化来同步,我在服务器上建立好发布后备份了一下,把备份拷到客户机上还原后发现 所有表里都没有rowguid字段了,导致还是得重新初始化。

我后来又自己手动在所有表里添加了ROWGUID列,类型一直 默认值是newid() 结果跳过初始化同步 出现了很多问题,数据混乱了。 我设置的是只下载服务器上的更改 结果现在我客户机上的库现在比服务器上还大。。。

高人若看到了这个回复 有办法解决我的难题 请发邮件给我 谢谢!
kyozz601@163.com
引用 progame
[ 2008-09-10 19:12:40 ]
rowguid要做为原来字段添加 不要让同步加就行了

发表
表情图标
[smile] [confused] [cool] [cry]
[eek] [angry] [wink] [sweat]
[lol] [stun] [razz] [redface]
[rolleyes] [sad] [yes] [no]
[heart] [star] [music] [idea]
UBB代码
转换链接
表情图标
悄悄话
用户名:   密码:   (非注册用户不需要输入密码) 注册?
验证码(不区分大小写) * 请输入验证码