Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Покритикуйте схему  [new]
host.13
Member

Откуда:
Сообщений: 263
Всем привет.
На суд спецов предлагаю решение одной проблемы.
Есть MS SQL Server 2008 сервер 1, сервер 2 и сервер 3 с одинаковым набором таблиц. Задача - обеспечить одинаковость данных на всех трех серверах в любой момент времени. Сервера объединены в сеть маршрутизатором, на котором запрещен поток пакетов в направлении от сервера 3 к серверам 1 и 2.
Собственно говоря, с сервера 3 вообще никуда доступа нет, а к нему доступ есть.
Для обеспечения одинаковости данных репликация не подходит, т.к. событие неудачи репликации в один из серверов отловить невозможно, да и проходить репликация может с задержками.
Придумал следующее. Когда клиент, подключенный к серверу 1 хочет записать данные в какую-либо талицу, он запускает на сервере хранимку, получающую в качестве параметров инфу что и куда записать. В хранимке начинается распределенная транзакция, которая пишет инфу во все три сервера. Хранимка возвращает клиенту результат успешно\неуспешно. Сервер 2 - аналогично. У сервера 3 никуда доступа нет, поэтому с ним сложнее. Сервер 3 записывает в локальную таблицу операций инфу куда и что записать. На любом из серверов раз в секунду запускается хранимка, проверяющая наличие необработаных записей на сервере 3. Если записи есть, то начинается распределенная транзакция, в которой выполняется запись во все три сервреа и в случае успеха запись помечается как обработанная. Сервер 3 записывает в таблицу операций тоже в транзакции, и затем в течении секунды ожидает изменения статуса записи. Если статус не изменился - значит распределенная транзакция провалилась - запись удаляестя и клиенту серера 3 отправляется сообщение об ошибке.

Что скажете?
16 окт 11, 23:55    [11448911]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте схему  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
host.13,
Не изобретайте свой велосипед с квадратными колесами, а лучше почитайте BOL про merge-репликацию.
17 окт 11, 00:29    [11448964]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте схему  [new]
host.13
Member

Откуда:
Сообщений: 263
Каким образом репликация слиянием гарантирует, что при обрыве связи в момент репликации в один из серверов, уже реплицированные данные в остальных серверах будут откатаны? И как вообще узнать успешно ли прошла репликация или нет?
17 окт 11, 12:09    [11450231]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте схему  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
host.13, повторюсь -- у вас превратные представления о работе репликации.
Как работает репликация слиянием
17 окт 11, 12:24    [11450385]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте схему  [new]
host.13
Member

Откуда:
Сообщений: 263
Если репликация неудачна, то на откатятся ли на издателе изменения, которые не удалось реплицировать?
17 окт 11, 12:45    [11450583]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте схему  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
host.13
Если репликация неудачна, то на откатятся ли на издателе изменения, которые не удалось реплицировать?

Документацию принципиально не читаем?
Еще в прошлой вашей теме вам говорили, что реплицируются только закоммиченные данные, следовательно ни о каких откатах речи быть не может.
17 окт 11, 12:47    [11450608]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте схему  [new]
host.13
Member

Откуда:
Сообщений: 263
invm,

А что значит закоммиченные данные? Если я записал что-то в таблицу и вижу с клиентов эти изенения, то эти изменения могут быть незакоммиченными чтоли?
17 окт 11, 13:06    [11450804]     Ответить | Цитировать Сообщить модератору
 Re: Покритикуйте схему  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
host.13
invm,

А что значит закоммиченные данные? Если я записал что-то в таблицу и вижу с клиентов эти изенения, то эти изменения могут быть незакоммиченными чтоли?
Могут. Зависит от уровня изоляции транзакций читателя.
17 окт 11, 13:10    [11450838]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить