Как синхронизировать онлайн и оффлайн базы данных - PullRequest
6 голосов
/ 01 июня 2011

У меня есть веб-приложение , которое предоставляет некоторую информацию для моих клиентов.У меня есть другая версия ( windows ), которая exactly work same as web application.

Это связано с тем, что веб-соединение может потеряться на несколько часов, и в это время пользователь будет использовать приложение.

Мне интересно, как синхронизировать эти SQL Server базы данных.

Обратите внимание, что веб-приложение использует 3 different cities и all of them have a windows based application too.Что мне делать?

Примечание. Windows windows - это именно веб-приложение, которое установлено на локальном веб-сервере в 3 разных городах, и пользователи имеют к ним доступ через свои LAN.

.

Ответы [ 2 ]

3 голосов
/ 01 июня 2011

Все обновления в данных из / в web / windows будут происходить из приложения windows.Но проблема в том, что приложение Windows будет работать, когда нет подключения к Интернету.

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

Веб-служба будет иметь два метода:

GetData(DateTime getRecordsFromThisDate) - Windows service should call this on regular intervals and update the local database.

UploadData(dataRows/collection) -  Windows service should call this on regular intervals and update the remote database.

Каждая запись в базе данных будет иметь временную метку.Для локального обновления получите наибольшую временную метку и отправьте ее в качестве параметра в GetData ().Веб-сервис вернет записи, созданные после этого времени.

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

1 голос
/ 01 июня 2011

Ваш выбор может заключаться в использовании резервной копии базы данных для синхронизации (возможно, довольно медленной и непрактичной).После этого вы должны использовать ETL.Выберите свой любимый инструмент.Вы можете использовать либо CDC сервера SQL Server, либо я бы порекомендовал отслеживание изменений, чтобы определить ваши изменения и загрузить только те.Затем используйте merge для синхронизации ваших изменений.Разумеется, эти решения потребуют от вас установки связанных серверов или использования третьей стороны для временного хранения изменений dml.

http://technet.microsoft.com/en-us/library/bb510625.aspx

http://msdn.microsoft.com/en-us/library/cc305322.aspx

Я думал, что ядобавила бы одно решение не от Microsoft http://www.red -gate.com / products / sql-development / sql-data-Compare / это не бесплатно, но делает именно то, что вам нужно.

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