合并复制问题!!!

qianguob 2006-02-06 10:34:34
想实现下面一个结果:
一个总部数据库 ,多个分支机构数据库, 他们的数据库结果完全一样,考虑到网络本身问题,分支机构使用本地数据库,但是为了总部数据统计方便,希望每天或者几天能对数据进行同步一次,实际上就是把各个分支的数据抓取到总部来,两者数据库结果完全一样,因为使用程序是一样的。

现在有个疑问,比如同一个表关键字肯定是确定的,那么在各个分支机构产生的关键字没有问题,但是如果把多个分支机构合并到一起可能就存在关键字重复问题(不知道使用合并复制有没有这个问题?),复制以前用过,但是合并复制没有使用过,不知道合并复制冲突能否自己解决这个问题?请各位大大指教,谢谢了。

如果不能使用合并复制,请各位给出一个解决方法,谢谢。

解决了马上结贴。
...全文
183 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qianguob 2006-02-07
  • 打赏
  • 举报
回复
那样就要修改程序了,同时由于涉及到数据表太多(>200个),程序修改范围太大,同时分支机构也不是确定的数量,比如今年是10个,明年可能是15个了噢。
aht1979 2006-02-07
  • 打赏
  • 举报
回复
你可以在分支、总部人为的定义好各标识列的范围。
比如:总部的范围100000000--199999999
一个分支的范围 200000000--299999999
这样发生冲突的几率会非常小
qianguob 2006-02-06
  • 打赏
  • 举报
回复
谢谢了,
那实际上我给每个分支机构做成一个发布服务器,然后总部进行订阅,这样是否就可以了,即使关键字重复,在总部也能保存数据的,对吗?
lsqkeke 2006-02-06
  • 打赏
  • 举报
回复
合并复制,会在所有用户表自动生成一个GUID列!标识记录的唯一性!

不会产生关键字冲突 即使原表有主键 这时是用GUID列标识记录唯一性的
qianguob 2006-02-06
  • 打赏
  • 举报
回复
合并复制,会在所有用户表自动生成一个GUID列!标识记录的唯一性!

=================
但是在总部的数据库里面是否产生错误,因为关键字就是原来的,这样不是违反了关键字原则吗?
还有我即使增加一个字段IDENTITY列作为关键字,那在不同的分支结构数据库上产生的IDENTITY值还是有可能会重复的。 即使我把这列设置成 rowguid 是不是也可能会重复,谢谢楼上两位的指教。
zlp321002 2006-02-06
  • 打赏
  • 举报
回复
合并复制,会在所有用户表自动生成一个GUID列!标识记录的唯一性!
aht1979 2006-02-06
  • 打赏
  • 举报
回复
关键字重复就会产生复制冲突,SQL SERVER 会采用冲突处理程序,默认是发布方的优先级最高
要避免这种情况,必须更改你的主键,把原来的主键改为唯一键。然后,你可以添加一个IDENTITY列,把它作为主键。分别定义发布方和订阅方的标识范围,这样就不会产生冲突了,另外要注意的事:IDENTITY列一定要选择NOT FOR REPLICATION, 否则发布方或者订阅方的标识列在同步的时候可能会被SQL SERVER更改,如此以来依旧可能会发生冲突。另外一个方法就是把ROWGUID列作为主键,rowguid 永远唯一,这样以来就永远不会发生冲突了.
qianguob 2006-02-06
  • 打赏
  • 举报
回复
经过试验,用合并复制成功,但是有个问题,订阅服务器上的数据会被发布服务器上的数据替换掉..
比如 订阅服务器上表里面有条记录为:
sid name
2 aaa
其中sid 为关键字,
这时候发布服务器这个表里面也有一条记录
sid name
2 bbb

运行复制以后,订阅服务器上就会变成
sid name
2 bbb
实际上我想得到:
sid name
2 aaa
2 bbb

大家想想办法,怎么解决?
qianguob 2006-02-06
  • 打赏
  • 举报
回复
现在我在配置的时候总是提示我我选择的快照文件夹不是有效的路径,但是我所给的用户是隶属于管理员组的啊,同时这个文件夹也共享给这个用户了。怎么回事?

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧