我和一个同事正在开发一些药房软件(用 C# 编写),它处理患者资料、患者药物处方等的管理。所有这些不同的数据集都存储在一个 sql server 数据库中(我们正在使用2008 标准,但未来版本也很好)。每个商店在本地机器上都有自己的 sql server 实例。
我们的目标:
如果需要,我们希望“Store A”能够访问“Store B”的数据库。基本上,如果药房客户可能不在城里并访问其他药房分支机构之一。
我想到的事情:
我最初的想法是基本上保留一个可以通过 dns 链接(或者可能是 IP)访问的 sql server 的在线服务器实例。我试图找出使这些保持同步的最佳方法,但我遇到了 sql 服务器复制。问题是我打算使用事务复制来更新订阅者,但由于它已被弃用,它不再是一个真正的长期选择。Microsoft 建议使用 p2p 复制,但这需要企业版,如果可以的话,我们确实在努力避免这种情况。我想使用事务类型的复制,因为它在保持记录一致方面做得更好(不必等待像合并代理作业这样的东西每小时运行一次或类似的东西)。
我最近想到的可能是拥有一个基于 Internet 的 sql server 实例,它只包含链接到每个商店本地机器的服务器。如果其他商店直接在彼此的本地机器上工作,我就不必担心同步问题。但是我读过很多人说这是一个可怕的安全漏洞,所以我不确定这是否是一个合理的想法,但我认为也许有一些方法可以使这个工作?
无论如何,这是我们正在尝试做的事情的基本要点。我不知道复制或链接服务器是否会是更好的选择。
编辑:
双向复制呢?我正在阅读一些关于此的内容,但我有点不确定这是否是我需要的。我不想在服务器或任何东西之间错开主键,因为它们在识别处方号和类似的东西方面非常重要。但如果我可以进行双向复制,那也很好。