Как синхронизировать базы данных на разных серверах в SQL Server 2008? - PullRequest
20 голосов
/ 06 августа 2010

У меня есть 2 базы данных, которые имеют одинаковую структуру, одну на локальном компьютере и одну на сервере компании. Каждый определенный промежуток времени данные из локальной БД должны синхронизироваться с БД сервера.

У меня есть общее представление о том, как это сделать - создать сценарий, который каким-то образом «объединяет» информацию, отсутствующую на БД сервера, а затем запустить этот сценарий как запланированное задание для сервера. Однако моя проблема заключается в том, что я не очень хорошо с этим разбираюсь.

Предоставляет ли SQL Server Management Studio простой способ сделать это (своего рода мастер) и генерирует этот вид сценария? Это то, что мне придется строить с нуля?

Я провел несколько базовых поисков в Google и наткнулся на термин «репликация», но не до конца понимаю. Я бы предпочел услышать мнение людей, которые действительно сделали это или которые хорошо объясняют подобные вещи.

Спасибо.

Ответы [ 5 ]

12 голосов
/ 06 августа 2010

Репликация звучит как хороший вариант для этого, но будут некоторые накладные расходы (не технические, но знания должны это поддерживать).

Другой вариант SQL Server - это SSIS. SSIS предоставляет графические инструменты для разработки того, что вы пытаетесь сделать. Пакет служб SSIS также может запускать операторы SQL, если это необходимо. Пакет служб SSIS может быть запущен и, следовательно, запланирован из задания SQL Server.

При выборе решения следует учитывать сложность правил синхронизации. Например, было бы трудно разрешить конфликты, такие как дубликат ключа, при объединении данных. Сценарий SQL может быть легко создан, если правила просты. Но сложные правила конфликта могут быть более сложными для реализации в сценарии (или репликации).

8 голосов
/ 06 августа 2010

SQL Server Management Studio, к сожалению, не так много предлагает.

Вы должны серьезно взглянуть на некоторые из отличных коммерческих предложений:

  • 1007 * SQL Сравнение и Сравнение SQL Data - отличные инструменты, настоятельно рекомендуется!Вы даже можете сравнить действующую базу данных с резервной копией из другой базы данных и синхронизировать данные - довольно изящно!

  • ApexSQL SQL Diff и SQL Data Diff

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

Единственный «бесплатный» вариант, который есть в SQL Server 2008, - создать ссылку между двумя серверами, а затем использовать нечто вроде MERGE (новое в SQL Server).2008) для передачи данных.Это не работает для структурных изменений, и оно ограничено только наличием живого соединения между двумя серверами.

5 голосов
/ 06 августа 2010

Вы обязательно должны прочитать репликацию транзакций. Это звучит как подходящая ситуация для ситуации, которую вы описали. Вот несколько ссылок для начала.

4 голосов
/ 06 августа 2010

То, что вам нужно, это Одноранговая репликация транзакций , которая позволяет обновлять данные в обеих базах данных, сохраняя при этом их синхронизацию посредством непрерывного объединения изменений. Это полное совпадение с тем, что вы хотите, но это довольно дорогой вариант (требуется Enterprise Edition на обоих сайтах). Другой вариант - Двунаправленная репликация транзакций , но, поскольку для этого требуются также две лицензии EE, я говорю, что одноранговое развертывание проще за те же деньги.

Более бюджетный вариант - Обновляемые подписки для репликации транзакций , но обновляемые подписки устарели, и вы поставите свои деньги на проигравшую лошадь.

Другой вариант - использовать Merge Replication . И, наконец, для случаев, когда «локальная» база данных является достаточно мобильной, существует Sync Framework .

Обратите внимание, что все эти параметры требуют некоторой настройки и взаимодействия со стороны серверной БД Компании.

0 голосов
/ 15 июля 2016

Есть несколько отличных сторонних инструментов. Для меня Сравнение данных xSQL всегда помогало. А поскольку сравнения легко модифицируются, это подходит практически для любого сценария сравнения данных или синхронизации данных. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...