Подтвердить что ты не робот

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

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

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

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

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

Спасибо.

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

  • ApexSQL SQL Diff и SQL Data Diff

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

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

Ответ 3

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

Ответ 4

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

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

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

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

Ответ 5

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