如何为不同公司的断开连接的系统同步两个数据库

时间:2011-06-06 23:43:39

标签: c# .net sql-server database ssis

是否有可用于保持数据库同步的标准消息传递协议/ API。或者用于创建和解析消息的API。

我们公司正在与另一家公司合作,为两种不同类型的用户提供两种不同的软件包。数据位于两个独立的数据库中,但部分数据库必须保持同步。

他们的系统对我们来说几乎是一个黑盒子。反之亦然。

因此,需要跟踪更新,将这些更新转换为消息并将其发送到Web服务,将这些消息映射回目标数据库字段,然后提交它们。

数据库模式不匹配。

我知道我们将不得不自己完成大部分内容,但有关消息或技术的一些想法会很好。

3 个答案:

答案 0 :(得分:3)

一个解决方案:SQL Server Integration Service。它出现在SQL Server 2005中。这正是您所需要的。它在SQL Server 2000中用于数据转换服务称为DTS。创建它是为了将数据从一个点导入/导出/转换为另一个点。这在SQL Server 2005中非常容易使用(DTS非常糟糕)。

所以基本上,你必须编写包来从他们的数据库导入数据,转换,过滤等等,它正是你需要它将它插入数据库的方式。反之亦然。

关于黑匣子事实,您应该生成数据库关系设计以使其更容易。

修改 如果您需要安装它,我记得SQL Server 2005安装程序中的错误根本没有安装SSIS。我必须满足安装程序系统要求步骤中的所有警告才能获得它。

答案 1 :(得分:0)

你有两个问题:

  • 跟踪必须同步的更改
  • 将更改应用于对等方

有一个解决方案结合了两个问题的解决方案,我相信你知道它:复制。 Merge Replication将允许两个站点更新数据,并且还可以提供合并冲突解决方案。但复制仅在表模式相似时才起作用,并且对开发施加了很大的约束,因为必须在站点之间仔细协调模式更改。实际上,当这些网站由独立公司运营时,很难长期维护。

如果您想自己滚动更改跟踪部件已在SQL Server中内置支持:

两者都可以用作同步解决方案,以检测 更改的内容。

应用更改可以通过Web服务解决,但SQL Server中还有内置解决方案,可以实现更高的可伸缩性和吞吐量:Service Broker。依靠消息定义的API进行同步,只要通信API(消息协议)保持不变,两个站点就可以按照自己的进度发展并几乎随意更改架构。

答案 2 :(得分:0)

提供的答案给了我一些好主意,但我认为我们最终会做一些不同的事情。

我们正在使用MSMQ,并定义一个标准的消息传递系统,我们将自己推出。

关于我们如何知道改变了什么,我现在不确定。