Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 同时更新两个不同的数据库_Sql Server_Database_Migration - Fatal编程技术网

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

Sql server 同时更新两个不同的数据库,sql-server,database,migration,Sql Server,Database,Migration,假设我有两个这样的数据库: 数据库a 创建表表1(字段1 int、字段2 int、字段3 int) 数据库b 创建表表1(字段1 int,字段2 int) 我们的旧应用程序使用B,并且必须继续这样做。我们正在开发一个新的应用程序,它将使用a。确保将A:Table1中的所有更改复制到B:Table1中的最佳方法是什么 以下是一些需要考虑的事项: 旧的应用程序将只执行选择B:Table1中的,不需要双向同步 旧应用程序必须继续使用B A:Table1中的大多数字段与B:Table1相同,但在某些

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

数据库a

创建表表1(字段1 int、字段2 int、字段3 int)

数据库b

创建表表1(字段1 int,字段2 int)

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


以下是一些需要考虑的事项:

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

以下是我考虑过的选择:

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

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


一如既往,感谢大家的时间和投入。

这里有很多选择

  • 您可以在事务中同时应用更新。这是指数据库不在同一服务器上
  • 您可以使用向其他服务器提供有保证的异步更新
  • 还将允许其他服务器以近乎实时的方式接收更新
最后,你需要仔细阅读每一项,并决定哪一项最适合你的需要。这将是可靠性和性能之间的权衡


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

您如何看待事务性复制?您可以只复制某些列,还可以编写自定义存储过程来执行插入、更新和删除操作。它也是异步的,所以您的新应用程序不应该因此而陷入困境