Как синхронизировать 2 базы данных - PullRequest
1 голос
/ 06 июня 2011

Я хочу синхронизировать 2 записи базы данных.Предположим, у меня есть две базы данных:

1.Shop 
2.Stock

Теперь давайте предположим, что пользователь меняет цену определенного товара на складе.Я также хочу изменить цену этого продукта в магазине!

Я выясняю, что при условии стабильного подключения к Интернету

  • При изменении цены на складе я вызываю веб-сервиссервис вставит записи в цену таблицы веб-данных.
  • Теперь на стороне магазина я пингую эту таблицу веб-данных с помощью веб-сервиса каждые 20 минут, если я нахожу новую запись, я обновляю соответствующую цену продукта в магазине!

Другой вариант, о котором я подумал, - репликация.Но мы используем экспресс-выпуск SQL Server и, насколько мне известно, экспресс-выпуск не может работать в качестве издателя!

Мой первый вариант эффективен для этой цели или я что-то упустил, и есть лучшая альтернатива для достиженияс этой целью!

Ответы [ 3 ]

1 голос
/ 26 октября 2011

У вас может быть триггер в таблице, как сказано выше в pRime, но вместо прямой записи в другую базу данных запишите изменения в локальную «промежуточную» таблицу, а затем каждые 20 минут или около того планируйте задачу для отправки обновлений второй дб.

Вы можете настроить вторую БД как связанный сервер.

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

0 голосов
/ 26 октября 2011

ЕСЛИ не может использовать функцию репликации MS SQL Server (требуется не-Express версия, как вы уже определили) для этой ситуации (см. http://msdn.microsoft.com/en-us/library/ms151198.aspx), тогда другой вариант - использовать MS Sync Framework (может работать с БД вплоть до SQL CE и т. Д., Файлы даже с пользовательскими источниками данных и т. Д.) - см. http://msdn.microsoft.com/en-us/library/bb726002.aspx.

Если вы действительно хотите реализовать это в коде самостоятельно (я настоятельно рекомендую против этого), то реализуйте его как «push-сценарий»:

  • Триггеры БД, которые заполняют промежуточные таблицы
  • Служба Windows, которая проверяет изменения в промежуточных таблицах и применяет их n
  • правила разрешения конфликтов
  • завершить запись всего этого, чтобы иметь возможность анализировать расхождения (на всякий случай)
0 голосов
/ 06 июня 2011

вы можете создать триггер на складе таблицы.

CREATE TRIGGER triggerName
ON [Stock].[dbo].[products]
AFTER UPDATE 
AS 
IF ( UPDATE (productPrice))
BEGIN
    --insert to shop
END
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...