Назад | Перейти на главную страницу

Как включить очередь сервисного брокера, когда она отключена?

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

Я ищу способ включить очередь, не открывая SQL Server Management Studio.

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

Правильное решение - никогда не откатывать намеренно и обрабатывать все ошибки. Однако это не всегда возможно. Я бы порекомендовал подключить уведомление о событии в очереди для события QUEUE_DISABLED. Это вызовет уведомление, и вы сможете отреагировать на это уведомление.

Очереди можно повторно включить с помощью:

ALTER QUEUE [queuename] WITH STATUS = ON;