Могу ли я обеспечить порядок диалогов в брокере службы sql?

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

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

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

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

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

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

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

  1. У меня должен быть один диалог для каждой транзакции.

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


person Matt Brunell    schedule 02.09.2010    source источник
comment
Можете ли вы указать наиболее важные различия между вашим собственным решением и зеркалированием базы данных и почему вы решили не использовать последнее?   -  person Pawel Marciniak    schedule 03.09.2010
comment
Это был не мой выбор. Я добавляю функциональность к существующей системе. У меня есть несколько новых таблиц, которые были созданы с моей стороны, и некоторые таблицы, которые используются совместно с другими подсистемами. Другие подсистемы аналогичным образом реплицируют данные на одноранговый сервер, поэтому, если будет выбрана новая стратегия (например, зеркальное отображение), то будет ли уместно иметь две разные стратегии репликации или сколько будет стоить переписывание кода. принадлежит другим проектам? (Последнее почти наверняка не произойдет.)   -  person Matt Brunell    schedule 03.09.2010


Ответы (1)


Вы должны использовать приоритет брокера. /библиотека/bb934170.asp

person Dalex    schedule 12.04.2011