首页 > 解决方案 > 如何持续同步两个 SQL Server 数据库?

问题描述

我有一个包含大量数据的 SQL Server 数据库,其中包含许多表、视图、触发器、存储过程等。其中一些表是:“用户”、“购物车”、“商店”等。

同时,我需要有一个这个数据库的副本,它应该在某个时间从主表同步。因此,我的主数据库中的更改应该每天几次反映在我的数据库副本中。此外,如果“用户”表发生变化,此更新应立即触发同步。

在数据库的副本中,我还有几个表“经理”、“学校”等,它们在主数据库中不存在。在同步时,根本不应该更改这些附加表,因为主数据库中不存在这些表。

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

我正在使用版本

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) 

标签: sql-serverdatabase-backupssql-server-2017

解决方案


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

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

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


推荐阅读