Синхронизировать клиентскую базу данных с центральной базой данных - PullRequest
0 голосов
/ 10 мая 2010

Мне нужно обновить существующие данные или вставить новые данные из клиентской базы данных, например, DB1, в центральную базу данных, скажем, DB2, содержащая одну и ту же схему, и обе базы данных находятся на одном компьютере. Обновления не являются двунаправленными. Я просто хочу, чтобы изменения отражались от клиента (DB1) к серверу (DB2).

Клиентская база данных (DB1) - это не что иное, как резервная база данных (полная резервная копия базы данных, состоящая из файлов mdf и ldf), которая подключена к тому же серверу, где существует центральная база данных (DB2). Я не собираюсь вносить какие-либо изменения в резервную базу данных (DB1) после ее подключения к серверу. Резервная база данных (DB1) уже содержит измененные данные, которые я хочу обновить до центральной базы данных (DB2). Итак, как мне сделать программно с использованием C # .NET?. Можете ли вы привести пример кода?

Я пробовал репликацию транзакций с принудительной подпиской без отправки снимка. Проблема в том, что я хочу обновить измененные данные из DB1 в центральную базу данных DB2 при первом же запуске, но репликация транзакций не позволит мне сделать это. Он не будет отправлять какие-либо измененные данные, которые уже присутствуют в DB1. Таким образом, исходные данные, присутствующие в DB1, остаются нетронутыми при попытке отправки без снимка. Резервная база данных (DB1) уже содержит измененные данные до репликации. Как мне решить эту проблему, поскольку я не собираюсь вставлять какие-либо новые или изменять данные в резервную базу данных (DB1) после установки репликации.

Спасибо и всего наилучшего, Паван

Ответы [ 3 ]

0 голосов
/ 10 мая 2010

Microsoft Sync Framework является лучшим решением, особенно если вы используете экспресс-выпуски (в этом случае репликация не будет работать).

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

И да - просто Google для примера, есть несколько простых переходов по этой теме, в том числе синхронизация между равноправными узлами (может быть, та, которая вам нужна) и синхронизация клиент-сервер (клиент должен быть SQL Server Compact Edition) .

0 голосов
/ 10 мая 2010

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

0 голосов
/ 10 мая 2010

Для этого у вас есть следующие опции:

1.) Использовать транзакционную репликацию SQL Server. Сделайте DB1 в качестве издателя, DB2 в качестве подписчика и перейдите к подписке на основе Pull или Push. Все изменения в DB1 будут просто отражены в центральном. Если какие-либо изменения, внесенные нами в Central для одного и того же кортежа, будут перезаписаны изменениями DB1.

Преимущества: простота реализации и надежность Недостатки: очень мало настроек

2.) Используйте Microsoft Sync Framework SQLDataBaseProvider. Преимущества: очень гибкий Недостатки: я слышал об этом плохие вещи, но никогда не пытался.

3.) Пользовательская реализация: это немного сложно, так как вам нужно отслеживать изменения в DB1. Одним из вариантов может быть чтение журналов транзакций, которые внутренняя репликация транзакций делает, или другой вариант - использовать триггер и получать информацию об изменениях. Затем вам нужно написать библиотеку или подпрограмму, которая поможет вам изменить знания, а затем применить к центральному.

Edit: Для резервного копирования и восстановления базы данных программно:

http://www.mssqltips.com/tip.asp?tip=1849

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