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


Реализация внутренней активации

Этот учебник предназначен для пользователей, не знакомых с компонентом Service Broker, но имеющих представление об основах баз данных и инструкциях Transact-SQL. С его помощью пользователям можно продемонстрировать реализацию хранимой процедуры с внутренней активацией для обработки сообщений компонента Service Broker.

Обзор учебника

В учебнике показано, как создавать объекты базы данных, которые требуются для поддержки простого диалога «запрос-ответ» компонента Service Broker с использованием хранимой процедуры с внутренней активацией. Далее предстоит начать диалог и в рамках этого диалога передавать сообщения.

В каждом диалоге компонента Service Broker есть два участника: инициатор диалога и его цель. В диалоге «запрос-ответ» сторона-инициатор направляет сообщение-запрос целевой стороне, которая возвращает сообщение-ответ. Внутренняя активация компонента Service Broker может использоваться для запуска хранимой процедуры при появлении сообщений для обработки. Компонент Service Broker может запускать несколько копий хранимой процедуры, если число передаваемых сообщений велико. В этом учебнике показано, как создать хранимую процедуру, которая получает сообщения-запросы от целевой стороны, и как настроить целевую сторону для использования внутренней активации для запуска хранимой процедуры.

На этом занятии будут выполняться следующие задачи.

  • Создание службы и очереди для целевой стороны, а также службы и очереди для инициатора диалога.

  • Создание типа сообщения-запроса и типа сообщения-ответа.

  • Создание контракта, в котором указывается, что сообщения-запросы передаются от инициатора к цели, а сообщения-ответы — от цели к инициатору.

  • Создание хранимой процедуры, которая получает сообщения-запросы из целевой очереди и отправляет сообщения-ответы стороне-инициатору.

  • Изменение целевой очереди для включения внутренней активации хранимой процедуры.

Далее будет проведен простой диалог.

  • Начните диалог.

  • Направьте запрос от инициатора к цели.

  • После этого компонент Service Broker активирует хранимую процедуру. Хранимая процедура получает запрос на целевой стороне и отправляет ответ стороне-инициатору.

  • Получите ответ на стороне инициатора.

  • Завершите сторону, инициировавшую диалог.

  • После этого компонент Service Broker активирует хранимую процедуру повторно, и она завершает целевую сторону диалога.

Сообщения не передаются по сети для диалогов, обе конечные точки которых принадлежат одному экземпляру компонента Database Engine. Система безопасности компонента Database Engine и заданные разрешения ограничивают доступ авторизованными участниками. Для этого сценария не требуется шифрование сети.

Учебник разделен на три занятия.

  • Занятие 1. Создание основных объектов диалога
    На этом занятии выполняется создание типов сообщений, контрактов, служб и очередей, необходимых для поддержки простых диалогов компонента Service Broker.

  • Занятие 2. Создание процедуры внутренней активации
    Это занятие содержит сведения о том, как создать хранимую процедуру, получающую сообщения из целевой очереди, а также о том, как изменить целевую очередь, чтобы включить внутреннюю активацию.

  • Занятие 3. Начало диалога и передача сообщений
    На этом занятии устанавливается простой диалог; в рамках этого процесса диалог создается, а затем отправляется сообщение-запрос от инициатора к цели. Хранимая процедура с внутренней активацией получает сообщение-запрос и возвращает сообщение-ответ. Затем завершается сторона, инициировавшая диалог, а хранимая процедура завершит целевую сторону диалога.

  • Занятие 4. Удаление объектов диалога
    На этом занятии удаляются объекты, созданные для поддержки диалога.

Системные требования

Чтобы выполнить задания в этом учебнике, необходимо владеть языком Transact-SQL и уметь пользоваться редактором запросов Database Engine в среде Среда SQL Server Management Studio. Необходимо быть членом предопределенных ролей базы данных db_ddladmin или db_owner для образца базы данных База данных AdventureWorks2008R2 либо предопределенной роли сервера sysadmin.

В системе должно быть установлено следующее.