当前,我正在努力在单独的服务器上建立第二个SQL Server数据库(我们称为B
),但它与主服务器在同一网络上(我们称为{{1} }。
出于安全性考虑,我需要基于某些表事件自动更新两者之间的特定信息,数据库B将与Web应用程序共享给该数据库,以供外部客户端使用。例如,当B中的某些表插入了新记录时,该信息也需要插入A中。而如果在A中更新了相同的表,则需要在B中对其进行更新。在两种情况下,都无需相反。
我已经读到触发器用于完成此操作,但是仅在我的情况下使用它们可能会导致一致性和可伸缩性问题,这是一个糟糕的选择。相反,我应该使用触发器将数据简单地复制到临时表中,通过SQL Server代理定期在后台运行的存储过程可以将数据复制到临时表中,如果添加了新的记录/作业,则可以传输该数据。 >
我的问题是:
最好让存储过程检查是否存在至少一条记录,然后在完成后从临时表中转移并删除该记录?
临时表是否应具有其他外部数据(例如表名,触发事件等)
如果将来需要考虑更多的表和事件,那么最好维护一个存储过程和一个临时表,在该存储过程中,存储过程可以基于外部数据,还是每个表/事件/触发器使用多个存储过程和临时表是最好的?
这是个坏主意吗,即使两者之间的表架构可能不匹配,也应该使用复制服务器或链接服务器吗?
很抱歉这么长时间。任何帮助都将不胜感激!
答案 0 :(得分:0)
双向同步将是一场噩梦,但并非总是可以避免。我可以看到两个选项: