Как я могу синхронизировать базы данных MS SQL Server?
Как я могу синхронизировать базы данных MS SQL Server? Есть ли какой-нибудь инструмент, желательно с открытым исходным кодом?
5 ответов
Для запланированной и специальной синхронизации базы данных вы можете использовать ApexSQL Diff (для синхронизации схемы объекта) и ApexSQL Data Diff (для синхронизации записи)
Они не могут быть использованы для синхронизации в реальном времени. ИМО, лучше всего использовать зеркалирование базы данных в режиме реального времени
Как уже говорили другие, в SQL Server 2008 существует множество встроенных способов синхронизации двух серверов в режиме реального времени или по расписанию.
Некоторые моменты, которые вы должны принять во внимание:
- Насколько "далеки" эти два сервера (т. Е. Какова пропускная способность и задержка между ними)?
- Насколько велики две базы данных?
- Как часто и насколько меняются данные?
- Изменяются ли данные на самом деле, или только новые данные добавляются к существующим?
В зависимости от ответов вы можете выбрать метод, наиболее подходящий для ваших нужд; кроме тех, которые уже были описаны (репликация и зеркалирование), помните, что вы также можете делать некоторые другие вещи:
- L og Shipping
- Экспорт / импорт данных с использованием служб Integration Services.
- Восстановления резервной копии.
- Отделить, сделать физическую копию, прикрепить.
Вы смотрели на встроенные функции зеркалирования? Technet имеет краткое описание здесь. Первичный сервер отправляет свои записи журнала транзакций на вторичный сервер, который затем воспроизводит журнал транзакций.
Зеркалирование может быть настроено синхронно или асинхронно.
Если я вас правильно понимаю, вы хотите иметь копию базы данных с веб-сервера на вашем локальном компьютере. Изменения в базе данных на веб-сервере следует периодически копировать на локальный сервер.
Я полагаю, что вы можете сделать это с репликацией, но вам нужен по крайней мере выпуск SQL Server рабочей группы на вашем веб-сервере.
Если ваша база данных невелика или не часто меняется, вы можете использовать репликацию моментальных снимков. SQL Server будет периодически делать снимок базы данных и копировать его на ваш локальный сервер.
Для больших или часто изменяемых баз данных я бы предложил использовать репликацию слиянием. Это меньше времени и ресурсоемких.
Вы можете получить больше информации о репликации в Books Online. Взгляните также на шаблоны движения данных.
У меня есть запись в блоге, описывающая, как настроить зеркальное отображение базы данных для не доменных серверов. Это, однако, не позволяет одновременно активировать оба SQL-сервера, для этого вам потребуется выполнить некоторую форму репликации. В зависимости от того, как осуществляется доступ к данным, если все они читаются, то это не так уж плохо, если они читаются на одном сервере и читают / пишут на другом, опять же не так уж плохо, если это запись / запись, то вы будете в некоторые "интересные" времена.