2010-09-02 2 views
0

Итак, у меня есть сервер «A» и «B». Мы используем SQL Service Broker для выполнения репликации. Приложению, которое нам нужно, нужно будет записать данные на сервер «A» или на сервер «B». (один может быть опущен, а другой должен взять на себя)Могу ли я обеспечить порядок диалогов в сервисном брокере sql?

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

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

Однако, если одноранговый сервер выключен, сообщения будут ждать в sys.transmission_queue.

Порядок сообщений в диалоговом диалоге гарантирован, но могу ли я обеспечить, чтобы диалоговые беседы обрабатывались в том порядке, в котором я их создал?

Например, у меня может быть проблема, если сервер «B» выключен, пользователь записывает данные на сервер «A». Как только сервер «B» снова будет восстановлен, если эти диалоговые разговоры обработаны не в порядке, они могут работать некорректно. (Они могут пытаться вставлять данные с плохим внешним ключом или что-то в этом роде).

Я работаю в следующих предположениях:

  1. Я должен иметь один диалог разговор по каждой сделке.

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

+0

Можете ли вы указать наиболее важные различия между вашим пользовательским решением и зеркалированием базы данных и почему вы решили не использовать последний? –

+0

Это был не мой выбор. Я добавляю функциональность к существующей системе. У меня есть несколько новых таблиц, которые были созданы с моей стороны, и некоторые таблицы, которые совместно используются другими подсистемами. Другие подсистемы реплицируют данные на одноранговый сервер аналогичным образом, поэтому, если необходимо выбрать новую стратегию (например, зеркалирование), было бы уместно иметь две разные стратегии репликации или сколько стоило бы переписать код принадлежащих другим проектам? (Последнее почти наверняка не произойдет.) –

ответ

Смежные вопросы