1

我和一个同事正在开发一些药房软件(用 C# 编写),它处理患者资料、患者药物处方等的管理。所有这些不同的数据集都存储在一个 sql server 数据库中(我们正在使用2008 标准,但未来版本也很好)。每个商店在本地机器上都有自己的 sql server 实例。

我们的目标:

如果需要,我们希望“Store A”能够访问“Store B”的数据库。基本上,如果药房客户可能不在城里并访问其他药房分支机构之一。

我想到的事情:

  1. 我最初的想法是基本上保留一个可以通过 dns 链接(或者可能是 IP)访问的 sql server 的在线服务器实例。我试图找出使这些保持同步的最佳方法,但我遇到了 sql 服务器复制。问题是我打算使用事务复制来更新订阅者,但由于它已被弃用,它不再是一个真正的长期选择。Microsoft 建议使用 p2p 复制,但这需要企业版,如果可以的话,我们确实在努力避免这种情况。我想使用事务类型的复制,因为它在保持记录一致方面做得更好(不必等待像合并代理作业这样的东西每小时运行一次或类似的东西)。

  2. 我最近想到的可能是拥有一个基于 Internet 的 sql server 实例,它只包含链接到每个商店本地机器的服务器。如果其他商店直接在彼此的本地机器上工作,我就不必担心同步问题。但是我读过很多人说这是一个可怕的安全漏洞,所以我不确定这是否是一个合理的想法,但我认为也许有一些方法可以使这个工作?

无论如何,这是我们正在尝试做的事情的基本要点。我不知道复制或链接服务器是否会是更好的选择。

编辑:

双向复制呢?我正在阅读一些关于此的内容,但我有点不确定这是否是我需要的。我不想在服务器或任何东西之间错开主键,因为它们在识别处方号和类似的东西方面非常重要。但如果我可以进行双向复制,那也很好。

4

1 回答 1

0

不是一个真正的答案,但我有更多的空间......

SQL Azure 是 SQL Server 的“云”版本。VPN 是一种通过互联网创建您自己的专用网络的方式。对这些术语进行一些研究。如今,许多应用程序正在走向云端。您应该真正考虑没有互联网访问的可能性。

关于复制,如果您拥有此应用程序并且乐于支持它,您可以“滚动您自己的”复制。

基本前提是:

  1. 在每个表上创建一个触发器,将每次更改的 PK 写入日志表
  2. 创建一个使用订阅者和发布者管理复制和合并仅更改的信息(基于日志表)的流程
于 2013-06-06T07:28:22.417 回答