首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在不同服务器上的两个Microsft SQL Server数据库之间更新表

在不同服务器上的两个Microsft SQL Server数据库之间更新表
EN

Stack Overflow用户
提问于 2018-07-02 22:05:27
回答 1查看 50关注 0票数 0

目前,我正致力于在单独的服务器上设置第二个Server数据库(我们将调用B),但在与主服务器相同的网络上(我们将调用A)。

出于安全考虑,我需要根据特定的表事件自动更新两者之间的特定信息,数据库B将与Web应用程序共享这些信息,供外部客户端使用。例如,当B中的某些表插入了新的记录时,该信息也需要插入到A中;而如果在A中更新了相同的表,则需要在B中更新这些表。

我读过触发器用于完成这一任务,但是如果只在我的情况下使用触发器来解决可能存在的一致性和可伸缩性问题,这将是一个糟糕的选择。相反,我应该使用触发器简单地将数据复制到临时表中,如果添加了新的记录/作业,定期通过SQL Server代理在后台运行的存储过程可以将该数据传输到临时表中。

我的问题是:

  1. 是否最好让存储过程检查是否至少存在一条记录,然后在完成临时表后从临时表中传输和删除该记录?
  2. 临时表是否有其他外部数据(如表名、触发器事件等)
  3. 如果将来需要考虑更多的表和事件,那么维护一个存储过程和一个临时表是个好主意,在这种情况下,存储过程可以根据外部数据确定数据的传输位置,还是每个表/事件/触发器的多个存储过程和临时表是最好的?
  4. 这是否是个坏主意,是否应该使用复制或链接服务器,即使两者之间的表模式可能不匹配?

抱歉让你喘不上气来。任何和所有的帮助都是非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-07-02 22:54:44

双向同步将是一个噩梦,而不是说你总是可以避免它。我可以看到两种选择:

  1. 将每个服务器作为链接服务器添加到另一个服务器上,创建一个INSERT/UPDATE/DELETE触发器,以来回移动已更改的数据。当双方都想更新时,您需要处理发生的事情。你也会在地狱里。
  2. 现代编码世界中的最佳实践是修改前端,将更改发送到队列服务(如service或RabbitMQ),而不是直接进行数据库调用,并让双方的侦听器同时执行db更新。不平凡的编码工作,但更灵活。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51144270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档