本地数据库和服务器数据库同步问题!

qiuyixiao5555 2010-12-06 04:45:06
本地数据库表的数据改变时服务器数据库对应的表也同时也改变
但是本地的联网状态不能确定时间,
联网时候 就把本地改变过的数据 添加到服务器数据库中。
请问 大虾们有什么好的方法啊!最好有代码··
我目前就 是用的 XML文件 读取数据 然后传到服务器,在进行读取但是发现这样做起来很麻烦

...全文
560 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2010-12-07
  • 打赏
  • 举报
回复
主键冲突的问题是帮不到你的,
这是系统分析时的问题,不是SQL Server复制的问题了.
建议先把系统规则确认清楚,确保不会冲突和重复数据了,再来配置复制.
复制和XML,说到底只是数据库工具而已.前端程序设计也很重要.
qiuyixiao5555 2010-12-07
  • 打赏
  • 举报
回复
如果 大家有什么其他方法 也可以说说,不一定要在我这个方法上去想办法,


我在把主要功能 说一下, 我用的是 asp.net 和 sqlserver 2008.

本地服务器 向 网络服务器 提交新的数据,
1.要求每次提交的数据只需要 本地新的数据,
2.本地服务器 联网 状态不确定,
3,本地服务器 在100台左右,
4,本地服务器 上传的数据量,目前不确定。因为 2 !


目前就是这些··

Q315054403 2010-12-07
  • 打赏
  • 举报
回复
有方案,有偿支持。灵活,不像复制会绑定死原结构
qiuyixiao5555 2010-12-07
  • 打赏
  • 举报
回复
楼上的··
我这里的传送的数据可以不是很大,
大概每个本地传送的在10MB左右、
本来我想的是给他们都设定好时间,然后提交到服务器上,
服务器读取完这些数据以后,将文件删除,
每隔20分钟后在检测是否还有文件,
如果有 就一样的读取到服务器数据里,

我这里的本地服务器在100台左右!
还有就是请问··
这样写入 服务器数据库 是不是 会有约束的存在,
就好比 我数据库类型 没有 3,但是添加进来的数据外键 却有3 ,这样数据库是会报错把!


其实还有很多的 问题,·
我不知道 是我想的太多了,这个功能就做不出来了。
我的做法是不是有问题!
唐诗三百首 2010-12-07
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 qiuyixiao5555 的回复:]
引用 7 楼 claro 的回复:
XML是不错的,对于大数据量会很糟糕。


这 楼 有什么好的方法嘛!
你的意思是 XML 可以还是不可以!
[/Quote]
小数据量传说时无所谓.
大数据量传送时,读取XML文件会很耗磁盘I/O的,所以不建议用.
qiuyixiao5555 2010-12-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 claro 的回复:]
XML是不错的,对于大数据量会很糟糕。
[/Quote]

这 楼 有什么好的方法嘛!
你的意思是 XML 可以还是不可以!
qiuyixiao5555 2010-12-07
  • 打赏
  • 举报
回复
很谢谢各位的回答!
大虾们给了我很多好的建议!

我用的是 sqlserver 2008
由于 本地机器 很多,再说地方也不一样,如果要一个一个的去复制过来的话!估计是个问题。
所以我才会想到 这个方法,由于小弟 技术有限,没能做出好的方法来,
就想到 用xML 文件来传递数据,例子已经做出来了!
但是遇到了 很多问题,
就像 上面 你们提到的,网络终断,
还有一个问题就是 如果他们同时或某些提交的话,
数据就会 出现覆盖情况!
所以现在很愁···

唐诗三百首 2010-12-07
  • 打赏
  • 举报
回复
谢谢billpu的回复..
tallen2005 2010-12-06
  • 打赏
  • 举报
回复
典型的复制场景!
建议使用复制解决此问题,既然网络不稳定也不会出现数据丢失的情况,换句话说复制把这种场景的复杂度降的最低。不建议自己做方案,自己做方案会出现很多意想不到的场景,例如交换中网络断了咋办,交换中冲突如何处理。

具体使用哪种复制需要详细的应用场景描述!
billpu 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ap0405140 的回复:]

引用 8 楼 billpu 的回复:
1 这个是标准的合并复制应用呀
2 因为网络因素不确定,建议订阅用请求订阅(pull)方式

请教本楼,
1.不能用合并复制吧?
因为服务器端(S)也接收其他本地数据库(如C2)的Log,
合并的话要将这些也同步回其他本地库(如C1)吗?楼主似乎没这个需求.
我认为应该是各本地数据库对服务器做交易复制.
2.请求订阅就……
[/Quote]
1 之所以说用合并复制,是因为楼主没有交代清楚sqlserver环境,2005虽然多了可更新的事务订阅发布,但是2000只有三种发布方式 快照,事务,合并.如果楼主的本地机和服务器都是2000的环境,在不清楚楼主的库应用和更新需求的情况下,你不可能让楼主每台本地机都建事务发布吧
2 之所以采用pull的方式,我不是说避免出错不出错的问题,而是楼主已经交代了网络环境不确定,也就是说可能随时是断网的情况下 另外也说了有不只一个本地服务器.我们来看看微软对请求订阅(pull)和推送订阅(push)的主要描述,我就不解释了
推送订阅:   
* 通常,数据将连续同步或按照经常重复执行的计划同步。
* 发布要求数据近似实时地移动。
* 分发服务器上较高的处理器开销不会影响性能。
* 通常与快照和事务复制一起使用。
请求订阅
# 数据通常按需或按计划同步,而非连续同步。
# 发布具有大量订阅服务器,并且/或在分发服务器上运行所有代理会消耗大量资源。
# 订阅服务器是自主的、断开连接的和/或移动的。 订阅服务器将确定连接和同步更改的时间。
# 通常与合并复制一起使用。
唐诗三百首 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 billpu 的回复:]
1 这个是标准的合并复制应用呀
2 因为网络因素不确定,建议订阅用请求订阅(pull)方式
[/Quote]
请教本楼,
1.不能用合并复制吧?
因为服务器端(S)也接收其他本地数据库(如C2)的Log,
合并的话要将这些也同步回其他本地库(如C1)吗?楼主似乎没这个需求.
我认为应该是各本地数据库对服务器做交易复制.
2.请求订阅就能避免复制监视器不报错吗?
请求订阅也跟网络有关系的呀,如果网络不通,总有一端会报错D.
billpu 2010-12-06
  • 打赏
  • 举报
回复
1 这个是标准的合并复制应用呀
2 因为网络因素不确定,建议订阅用请求订阅(pull)方式
claro 2010-12-06
  • 打赏
  • 举报
回复
XML是不错的,对于大数据量会很糟糕。
唐诗三百首 2010-12-06
  • 打赏
  • 举报
回复
补充一下,因为楼主的网络状态是不确定的,
所以如果复制监视器有报错也是正常的,不影响实际数据的同步.
但为了完善,可以在本地数据库的作业(Job)列表中找到同步对应的Job,
在执行之前增加一个步骤判断当前网络状态,
如果不通则直接退出,不执行同步以免报错.
唐诗三百首 2010-12-06
  • 打赏
  • 举报
回复
多个本地数据库的话,还是做复制(Replication)好了,也许只能用这个了.
不熟的话建议楼主先了解一下复制的原理.
例如本地表建复制(replication)到服务器上的表,
初始化快照后,数据是同步的.后面每次同步数据,将本地表的变更日志(Log)传到服务器上的表去重做,
以达到同步的目的.

qiuyixiao5555 2010-12-06
  • 打赏
  • 举报
回复
楼上你说的有点用!
但 是我 是 多个本地数据库,然后向一个服务器提交!
怎么对比啊··
唐诗三百首 2010-12-06
  • 打赏
  • 举报
回复
建议步骤如下供参考,细节部分需根据实际情况补充及完善.
1.初始化本地和服务器的数据库,使其同步.
如backup --> restore
2.本地写个存储过程,做成Job定时执行.
2.1 判断本地的联网状态,如不通则退出.

exec master..xp_cmdshell 'ping [服务器IP地址]'

2.2 如果是连网状态,将本地数据做差异备份.

backup database xxx to disk='\\服务器名\共享文件夹\xxx.bak' with DIFFERENTIAL

3.服务器写个存储过程,做成Job定时执行.
定期判断共享文件夹里是否有未还原的bak文件,如有则进行restore.

restore database xxx from disk='[共享文件夹]\xxx.bak' with norecovery

qiuyixiao5555 2010-12-06
  • 打赏
  • 举报
回复
发布订阅 ??
这个还没接触过··
我现在就是 遇到了 这样同步的难题、
能详细点么··
我大概主要的功能就是
本地数据库新的数据要向服务器提交!
实现 本地和 服务器 数据一样,
但是 本地服务器有多个,服务器就一个!
jwdream2008 2010-12-06
  • 打赏
  • 举报
回复
发布订阅?

22,210

社区成员

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

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