如何连续同步两个SQL服务器数据库?

How to continually synchronize two SQL Server databases?

我有一个 SQL 服务器数据库,其中包含大量数据,有许多 table、视图、触发器、存储过程等。其中一些 table 是: 'users'、'cart'、'stores'等

同时,我需要这个数据库的副本,它应该在特定时间从主 table 同步。因此,我的主数据库中的更改应该每天几次反映在我的数据库副本中。此外,如果 'users' table 发生变化,此更新应立即触发同步。

在数据库副本中,我多了几个table'managers'、'schools'等,这些在主数据库中是没有的。同步时,这些额外的 table 根本不应更改,因为它们不存在于主数据库中。

因此,让我们独立于使用它们的解决方案来看一下这些数据库。我想知道的是:设置这种同步的最佳方法是什么?数据库很大,从一个位置到另一个位置查询每个数据库 tables 的数据似乎不是一个好的选择。有什么通用的方法可以进行这种同步吗?这应该在代码中完成,还是在放置数据库的服务器上(在控制面板下)或可能通过 SQL 服务器本身有一些触发器?我不确定这里最好的选择是什么,所以请指教。

我正在使用的版本

Microsoft SQL Server 2017 (RTM-CU9-GDR) (KB4293805) - 14.0.3035.2 (X64) Jul  6 2018 18:24:36   
Web Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) (Hypervisor) 

您需要配置对象级复制,您可以在其中 select 特定表、存储过程、视图等。您的主要数据源将称为发布者,次要数据源 您将存储此更改的位置将称为订户。

复制完全可以满足你的要求。

复制有多种类型,假设更改不会从辅助位置发生,transactional replication 最适合您的要求。