Поделиться через


Запросы очередей

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

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

ПримечаниеПримечание

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

Описание столбцов очереди см. в разделе CREATE QUEUE (Transact-SQL).

Далее представлен пример инструкции SELECT, определяющей число сообщений в очереди ExpenseQueue:

SELECT COUNT(*) FROM dbo.ExpenseQueue WITH (NOLOCK) ;

Следующая инструкция SELECT позволяет администратору узнать, содержит ли очередь ExpenseQueue какие-либо сообщения, адресованные службе //Adventure-Works.com/AccountsPayable/Expenses:

IF EXISTS(SELECT * FROM dbo.ExpenseQueue WITH (NOLOCK) WHERE
          service_name = '//Adventure-Works.com/AccountsPayable/Expenses')
  PRINT 'The queue contains messages for ' +
        '//Adventure-Works.com/AccountsPayable/Expenses'
ELSE
  PRINT 'The queue does not contain messages for ' +
        '//Adventure-Works.com/AccountsPayable/Expenses' ;

Обновлениями очередей управляет компонент Service Broker. Хотя имя очереди может быть указано в качестве имени таблицы в инструкции SELECT, очередь не может быть целью инструкций INSERT, UPDATE, DELETE и TRUNCATE. SQL Server не позволяет пользователям создавать индексы для очередей.

См. также

Справочник

Основные понятия