Репликация сервера SQL: снимок против слияния - PullRequest
0 голосов
/ 26 мая 2010

Справочная информация
Допустим, у меня есть два сервера баз данных, оба SQL Server 2008.
Один находится в моей локальной сети (ServerLocal), другой - в среде удаленного хостинга (ServerRemote).

Я создал базу данных на ServerLocal и имею точную копию этой базы данных на ServerRemote. База данных на ServerRemote является частью веб-приложения, и я хотел бы, чтобы ее данные были актуальными с данными в базе данных ServerLocal.

ServerLocal может взаимодействовать с ServerRemote, это односторонний трафик. Связь между ServerRemote и ServerLocal недоступна.

Текущее решение
Я думал, что было бы хорошим решением использовать репликацию. Поэтому я сделал ServerLocal издателем, и подписки отправляются на ServerRemote. Это прекрасно работает, когда снимок переносится на ServerRemote, существующие данные будут очищены, а база данных ServerRemote снова станет точной копией базы данных на ServerLocal.

Проблема
Записи, которые существуют на ServerRemote, которые не существуют на ServerLocal, удаляются. Это не имеет значения для большинства моих таблиц, но в некоторых из моих таблиц я хотел бы сохранить существующие данные (например, aspnet_users) и обновить записи при необходимости.

Какая репликация подходит моей проблеме?

1 Ответ

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

Вариант C: репликация транзакций.

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

Посмотрите, что будет правильным для вашей ситуации, или оставьте комментарий с более подробной информацией о том, как вы изначально получили свои данные в подписчике. Я не слишком знаком с aspnet_users и что это такое. Репликация транзакций помогает, только если вы не хотите, чтобы данные подписчика возвращались издателю. Если вы хотите, вам придется выполнить репликацию слиянием.

...