Синхронизировать изменения в базе данных SQL Server с базами данных удаленных клиентов - PullRequest
2 голосов
/ 18 октября 2011

Каков наилучший способ синхронизации базы данных SQL Server с базами данных удаленных клиентов? Веб-сервисы / любые другие встроенные функции, доступные в SQL Server?

Сведения о приложении: - Рабочий стол Wpf с SQL Server 2005.

Сценарий - это главный офис клиента, имеющий базу данных управления запасами. Та же структура базы данных реализована в удаленных точках клиента. Новые акции добавляются в базу данных главного офиса. Всякий раз, когда новая строка добавляется в базу данных головного офиса, необходимо сообщить все базы данных удаленного клиента SQL Server. И всякий раз, когда происходит изменение в удаленной клиентской точке, необходимо отправить изменения обратно в базу данных главного офиса.

Спасибо заранее.

1 Ответ

3 голосов
/ 24 января 2012

После долгих исследований у меня сложилось следующее:
1. Репликация сервера Sql
2. SymmetricDS
3. Microsoft Sync Framework
4. Индивидуальный сервис WCF. (пример)

Я выбрал настроенный сервис WCF для синхронизации БД. Принятые шаги упомянуты здесь.

1. Создана таблица индексов. Эта таблица содержит историю транзакций и подпись клиента.

2. Создан сервисный уровень (библиотека классов), который получает и возвращает строки таблицы как объекты DTO без сохранения состояния. Этот сервисный уровень ссылается на уровень доступа к данным, который отвечает за связь с базой данных.
На этот сервисный уровень и уровень доступа к данным ссылаются сервис WCF и сервис Windows.

3. Создал один сервис WCF и разместил его в IIS веб-сервера. Этот сервис предлагает:
а). Скачать (DTOClass dto)
б). Загрузить (DTOClass dto) сервисные контракты.

4. Создал одну службу Windows и развернул ее в нескольких клиентских местах. Эта служба использует службу WCF, размещенную на веб-сервере IIS.

Службы Windows из местоположения клиента связываются со службой WCF через определенные промежутки времени, если новое обновление доступно в базе данных главного сервера (эта информация доступна в IndexTables), служба Windows загружает обновление (с использованием контракта на загрузку (DTOClass dto)) и обновляет локальную базу данных.

Аналогичным образом, если какие-либо изменения происходят в локальной базе данных, служба Windows передает эти изменения в службу WCF (используя контракт Upload (DTOClass dto)). Служба WCF затем обновляет базу данных master.

Поскольку обе службы обращаются к серверам баз данных локально, это приводит к повышению производительности.

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