Как постоянно синхронизировать две базы данных SQL Server?

#sql-server #database-backups #sql-server-2017

#sql-сервер #база данных-резервные копии #sql-server-2017

Вопрос:

У меня есть база данных 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) 
  

Комментарии:

1. Если вы используете SQL Server 2017 (как указано в выходных данных), почему вы отметили 2005, 2008 и 2012? Все они не относятся к 2017 году, и все они не поддерживаются; 2 из которых полностью не поддерживаются.

2. Это называется репликацией , а не синхронизацией. Он доступен из коробки во всех версиях и выпусках SQL Server, начиная с 2000 года (возможно, и раньше)

Ответ №1:

вам необходимо настроить репликацию на уровне объекта, где вы можете выбирать определенные таблицы, хранимые процедуры, представления и т.д. ваш основной источник данных будет называться publisher, а вторичное местоположение, в котором вы будете хранить это изменение, будет называться subscriber.

Репликация может полностью удовлетворить ваши требования.

Существует много типов репликации, и, предполагая, что изменения не будут происходить из вторичного местоположения, транзакционная репликация лучше всего подойдет для ваших требований.