POS应用程序的最佳解决方案是什么?

时间:2010-08-10 11:30:32

标签: sql-server sql-server-2005 replication point-of-sale

我目前在POS项目上。用户要求此应用程序可以在线和离线工作,这意味着他们需要本地数据库。我决定在每个商店和总部之间使用SQL Server复制。每个商店都需要安装SQL Server Express,而总公司已经拥有SQL Server企业版。复制将按计划每30分钟运行一次,我选择合并复制,因为数据可以在商店和总部进行更改。

当我在做POC时,我发现这个解决方案不能正常工作,有时候工作是错误的,我需要重新初始化它。这个解决方案也需要很长时间,这对用户来说显然是不可接受的。

我想知道,有没有比我现在正在做的更好的解决方案?

更新1:

系统的约束

  1. 几乎所有交易都可以在 商店和总公司。
  2. 某些交易需要以实时模式工作,如上所述, 用户将数据保存到本地商店后,数据也应该在总公司更新。 (如果他们目前在线)
  3. 即使他们的商店与总公司数据库断开连接,用户也可以工作。
  4. 我们对数据量的估计每天最多2,000行。
  5. Windows 2003是总部服务器的操作系统,Windows XP是所有客户端的操作系统。
  6. 更新2:

    1. 目前他们大约有15个客户,但这个数字会以相当慢的速度增长。
    2. 每个复制的数据大小约为100到200行,我认为它可能不超过5 MB。
    3. 客户端通过租用线路连接连接到服务器; 128 kbps。
    4. 我的情况是复制需要很长时间(大约55分钟,而我们只有5分钟左右)而且几乎有时候我需要重新初始化作业以重新开始复制​​,如果我不这样做的话重新初始化工作,它根本无法复制。在我的POC中,我发现重新初始化后复制总是需要很长时间,时间量不依赖于数据量。顺便说一句,重新初始化只是解决方案,我发现它适用于我的问题。

      如上所述,我的结论是,复制可能不适合我的问题,我认为它可能有另一个更好的解决方案,可以满足我在更新1中的需要:

3 个答案:

答案 0 :(得分:2)

听起来您可能需要推出自己的双向复制引擎。

事情需要很长时间的部分原因是,在这种狭窄的链接(128kbps)上,两个数据库必须保持一致(因此需要检查所有行)才能开始复制。你可以想象,这可能(并且确实)需要很长时间。即使是5Mb也需要大约一分钟才能通过此链接进行转移。

编写自己的引擎时,确定需要复制的内容(使用项目更改时的时间戳),找出冲突解决方案(如果在复制期间两个位置同一记录发生了变化,会发生什么情况)等等。这并不容易。

答案 1 :(得分:0)

我的建议是在本地使用MS访问,并在一定时间间隔后不断更新数据到服务器。将更新的列添加到每个表。添加或更新记录时,请设置更新的coloumn。要删除,您需要有一个单独的表,您可以在其中放置主键值和表名。同步时,获取未更新字段的所有本地记录,并将其更新(修改或插入)到中央服务器。使用本地删除的表删除所有记录,您就完成了!

我假设您的中央服务器仅用于收集数据。

答案 2 :(得分:0)

我目前正在使用为Web同步配置的SQL Server合并复制完成您所描述的内容。我让我的代理人按照1分钟的时间表运行并取得了成功。

您看到了哪些错误消息?