如何根据记录类型同步子数据库?

时间:2014-12-17 16:15:46

标签: sql-server database ssis service-broker

我们有一种情况,即拥有两个独立的数据库是一个不可动摇的要求,但我们希望保留我们当前用来操作曾经是单个数据库的单个基于Web的前端。记录需要根据列的值进入子数据库,假设员工类型为“每小时”与“受薪”。

在Web界面和数据库之间有很多同义词,存储过程和其他SQL,所以我们认为我们可以将当前数据库用作“主”数据库,而不是进行拆分。然后在其后面有一些 将数据导入两个子数据库中的任何一个。 (如下图所示:)

Database diagram

我们似乎对数据以一种方式(从Web界面到子数据库)流动的程度很好 - 在数据流回到另一种方式(从子数据库到主数据库)的程度上,我们似乎进入一些毛茸茸的情况。

其中一些似乎难以处理(例如,如果一个人在子DB上插入一个自动增量ID为1的记录,同时一个人在DB B上插入一个ID为1的记录),但大多数他们似乎只是一个痛苦的屁股。

我的问题是:是否存在允许我们同步这些数据库的解决方案,但允许我们插入“仅当员工列的状态为X”时的逻辑,而不是盲目地镜像他们吗

以下是一些浮现的想法:触发器似乎有潜力,但似乎也有很多工作,我们想知道是否有任何工具可以解决同步的繁重问题我们。那里有人有什么想法吗?

  • 触发器
  • Service Broker
  • SSIS
  • Microsoft Sync Framework

1 个答案:

答案 0 :(得分:1)

所以这更像是一种观点,因为您已经确定了每种解决方案的可能性。没有简单的解决方案,但轻量级的方法是将CDC与SSIS结合使用。 SSIS内置了与CDC协同工作的挂钩,CDC将为您的主数据库提供更好的性能 - 它不会涉及使用将数据插入另一个数据库的触发器可能发生的等待。

Here is more on CDC