我目前在POS项目上。用户要求此应用程序可以在线和离线工作,这意味着他们需要本地数据库。我决定在每个商店和总部之间使用SQL Server复制。每个商店都需要安装SQL Server Express,而总公司已经拥有SQL Server企业版。复制将按计划每30分钟运行一次,我选择合并复制,因为数据可以在商店和总部进行更改。
当我在做POC时,我发现这个解决方案不能正常工作,有时候工作是错误的,我需要重新初始化它。这个解决方案也需要很长时间,这对用户来说显然是不可接受的。
我想知道,有没有比我现在正在做的更好的解决方案?
更新1:
系统的约束
更新2:
我的情况是复制需要很长时间(大约55分钟,而我们只有5分钟左右)而且几乎有时候我需要重新初始化作业以重新开始复制,如果我不这样做的话重新初始化工作,它根本无法复制。在我的POC中,我发现重新初始化后复制总是需要很长时间,时间量不依赖于数据量。顺便说一句,重新初始化只是解决方案,我发现它适用于我的问题。
如上所述,我的结论是,复制可能不适合我的问题,我认为它可能有另一个更好的解决方案,可以满足我在更新1中的需要:
答案 0 :(得分:2)
听起来您可能需要推出自己的双向复制引擎。
事情需要很长时间的部分原因是,在这种狭窄的链接(128kbps)上,两个数据库必须保持一致(因此需要检查所有行)才能开始复制。你可以想象,这可能(并且确实)需要很长时间。即使是5Mb也需要大约一分钟才能通过此链接进行转移。
编写自己的引擎时,确定需要复制的内容(使用项目更改时的时间戳),找出冲突解决方案(如果在复制期间两个位置同一记录发生了变化,会发生什么情况)等等。这并不容易。
答案 1 :(得分:0)
我的建议是在本地使用MS访问,并在一定时间间隔后不断更新数据到服务器。将更新的列添加到每个表。添加或更新记录时,请设置更新的coloumn。要删除,您需要有一个单独的表,您可以在其中放置主键值和表名。同步时,获取未更新字段的所有本地记录,并将其更新(修改或插入)到中央服务器。使用本地删除的表删除所有记录,您就完成了!
我假设您的中央服务器仅用于收集数据。
答案 2 :(得分:0)
我目前正在使用为Web同步配置的SQL Server合并复制完成您所描述的内容。我让我的代理人按照1分钟的时间表运行并取得了成功。
您看到了哪些错误消息?