sql-server - 同时更新两个不同的数据库

标签 sql-server database migration

假设我有两个这样的数据库:

数据库A

create table Table1 ( field1 int, field2 int, field3 int )

数据库B

create table Table1 ( field1 int, field2 int )

我们的旧应用程序使用 B 并且必须继续这样做。我们正在开发一个将使用 A 的新应用程序。确保 A:Table1 中的所有更改都复制到 B:Table1 中的最佳方法是什么?


这里有几点需要考虑:

  • 旧应用程序只会在 B:Table1 中执行选择,不需要双向同步。
  • 旧应用程序必须继续使用B
  • A:Table1中的大部分字段与B:Table1相同,但在某些情况下需要进行某种类型的数据转换。
  • 性能不是大问题,因为不会有太多修改。
  • 起初,只有 1-2 个表需要同步,但随着我们将更多模块迁移到新版本,将会添加更多表。
  • 两个数据库来自不同的供应商。

以下是我考虑过的选项:

  • 在新的应用程序中,更新两个数据库:
    我不喜欢这个选项,因为它给新的应用程序数据层增加了很多复杂性,而且两个数据库之间没有事务
  • 使用 A 中的触发器启动一个应用程序,该应用程序将复制 B
    中的更改 不确定这是否是一个好的做法以及它的可靠性
  • A中使用触发器启动存储过程以复制更改
    某些数据转换可能太复杂而无法在存储过程中完成
  • 以设定的时间间隔启动应用程序或存储过程以进行更改
    不是实时的,所以我宁愿不用这个

你在这方面有什么困难?
我错过了另一个选择吗?
你做过类似的事情吗?
是否有可以完成这项工作的软件(免费或非免费)?

一如既往,感谢大家的宝贵时间和意见。

最佳答案

这里有很多选择...

  • 你可以link the servers并在事务中一起应用更新。这是如果数据库在同一台服务器上。
  • 你可以使用 Service Broker向另一台服务器提供有保证的异步更新。
  • Log shipping还将允许其他服务器以近乎实时的方式接收更新。

最后,您需要详细阅读每项内容并确定最适合您需求的内容。这将是可靠性和性能之间的权衡。

仅从您问题中的信息来看,Service Broker 似乎是最合适的选择。您仍然可以使用触发器来调用代理,然后异步响应。

关于sql-server - 同时更新两个不同的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8359284/

相关文章:

swift - 无法调用非函数类型的值 'SessionManager'

ruby-on-rails - Rails 迁移如何强制关系?

sql - 使用Sqoop导入hadoop时如何识别sql server中删除的记录

sql-server - 事务复制问题

c# - ASP.NET Web 应用程序的 SQL 性能不佳

sql-server - Rails 3.2.8 - 一个 Rails 应用程序中的多个数据库访问

.net - (自动)将 CodePlex 项目迁移到 GitHub

sql-server - SSIS:截断 Excel 目标

用于建立优先级的 SQL 数据库查询设计

database - Data Dude/VS Team System Database - 与多项目数据库一起使用