0

我正在尝试找到使用另一个数据库中多个表中的数据填充表的最佳方法。实时。

这两个数据库都是 Microsoft Sql Server 2012 Standard。

例如,数据库 A 包含以下 2 个表:

名称:[A].[dbo].OrdersToProcess 列:OrderId、Status、NumItems

名称:[A].[dbo].OrdersProcessed 列:OrderId、Status、NumItems、TimeProcessed

数据库 B 包含下表:

名称:[B].[dbo].Orders 列:OrderId、Status、NumItems、Processed、TimeProcessed

用数据库 A 中两个表中的数据更新数据库 B 的最佳方法是什么?

在上面的示例中,OrdersToProcess 将使用 OrderId、Status、NumItems 填充表 [B].[dbo].Orders,将 FALSE 插入 Processed 并将 TimeProcessed 保留为 null

OrdersProcessed 将使用 OrderId、Status、NumItem、TimeProcessed 填充表 [B].[dbo].Orders 并将 TRUE 插入到 Processed 中。

为了实现数据库之间的实时同步,我之前使用过sql复制,但是不知道这对于不一样的表能不能做到???

我能想到的唯一其他选择是每隔一段时间运行一个 MERGE 命令,但这并不是真正的实时。

有没有人知道可以做到这一点的任何工具/方法,或者有人试图实现同样的目标?

谢谢

4

1 回答 1

0

有几种方法可以解决这个问题。(排名不分先后)

  1. 创建一个增量 ETL 流程,从数据库 A 中获取更改并将它们加载到数据库 B。您可以在 ETL 包中进行转换,或者将数据加载到临时表中进行处理。您可以每 x 分钟运行一次。
  2. 在数据库 A 中的表上创建触发器,使用链接服务器将数据加载到数据库 B 中。(* 您甚至可以利用服务代理创建消息以将数据发送到 b)
  3. 创建某种形式的消息传递平台,该平台在 A 中的表具有 DML 操作时启动。然后,这将向数据库 B 发送一条消息,以从数据库 A 中获取数据并将其插入。注意:(这也可以采取在 B 上执行远程存储过程的形式,它只是拉取新数据并加载它)。

您选择的方法取决于您的环境以及每种方法的测试方式。

于 2013-08-08T19:21:31.137 回答