Моя очередь инициатора заполнена примерно 18 миллионами старых сообщений EndDialog или Error message_type_name.
По-видимому, образец кода Microsoft, который я использовал для настройки внутренней активации (http://msdn.microsoft.com/en-us/library/cc281517.aspx) не содержит шага для завершения диалога на стороне инициатора (я читал, что это называется «выстрелил и забыл»).
Мне интересно, потому что мои sysdercv и другие таблицы, связанные с сервисным брокером, теперь имеют двузначные гигабайты: как я могу избавиться от этих старых сообщений?
Я пытался запустить END CONVERSATION на нескольких тысячах, но я не вижу изменений в размере в этих системных таблицах.
Кроме того, как я могу изменить службу / очередь инициатора на автоматический EndDialog в будущем?
Изменить: я должен упомянуть, что, несмотря на то, что через конвейер проходит все больше и больше сообщений, я не видел, чтобы ни одна из этих системных таблиц меняла размер как минимум за полчаса.
Фактически, упомянутый вами учебник действительно вызывает КОНВЕРСАЦИЮ с обеих сторон. Следовательно, он не страдает от паттерна «выстрелил и забыл». Однако первая END CONVERSATION (сторона инициатора) запускается вручную из окна запроса, что не очень практично. В производстве вы, вероятно, захотите иметь активированную процедуру на обоих концах - один на стороне инициатора получит ответ от цели и завершит разговор (то есть, если вы хотите сохранить схему обмена сообщениями из учебника) .