Service Broker не работает после восстановления базы данных

есть рабочий Брокер службы, настроенный на сервере, мы находимся в процессе перехода на новый сервер, но я не могу настроить Service Broker на новом окне.

сделали очевидные (для меня) вещи, такие как включение брокера в БД, удаление маршрута, услуг, контракта, очередей и даже типа сообщения и их добавление, установка ALTER QUEUE со статусом ON

выберите * из sys.service_queues

дает мне список очередей, включая мой собственный два, которые показывают, как activation_enabled, receive_enabled и т. д.

Излишне говорить, что очереди не работают. Когда я бросаю в них сообщения, ничего не входит и ничего не выходит.

какие идеи? Я уверена, что упустила что-то очень очевидное...

2 ответов


просто выстрел в темноте:

ALTER AUTHORIZATION ON DATABASE::[restored db name] TO [sa];

dbo восстановленной базы данных-это SID Windows, который создал БД на исходном сервере. Это может быть локальный SID (например. SERVERNAME\user), который не имеет значения на новом сервере. Эта проблема обычно влияет на активированные процедуры и мая влияет на доставку сообщений, обе проблемы происходят из-за неспособности SQL олицетворять "dbo". Изменение dbo на действительный Sid входа (например, sa) исправит это.

если этот не исправляет это, тогда вам нужно отслеживать, куда идут сообщения. Если они останутся в sys.очереди, то вы должны проверить transmission_status. Если они достигнут цели queueu, но активация не происходит, проверьте журнал ошибок. Если они исчезнут, значит, исчезнешь ты!--8-->пожаро-и-забыл (отправить сразу же после окончания), и поэтому вы удаляете сообщение об ошибке, которое указывает на причину. Эта статья Устранение Неполадок Диалоги содержит больше советов, где смотреть.

и последнее, но не менее, попробуйте использовать ssbdiagnose.exe.


в дополнение к ответу Remus, вы также можете проверить свойство BrokerEnabled restoredDB. При восстановлении БД свойству BrokerEnabled восстанавливаемой БД присваивается значение False. По этой причине ничего не войдет в вашу очередь. Для решения этого:

  • щелкните правой кнопкой мыши на restoredDB в SSMS > goto "свойства" > "параметры" > Прокрутите вниз до группы "Service Broker" и проверьте значение " Broker свойство Enabled. Если установлено значение False, измените это правда и это должно решить вашу проблему.