Занятие 1. Создание объектов диалога

Добавления: 15 сентября 2007 г.

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

Процедуры

Включение компонента Service Broker и переключение в базу данных AdventureWorks

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

    USE master;
    GO
    ALTER DATABASE AdventureWorks
          SET ENABLE_BROKER;
    GO
    USE AdventureWorks;
    GO
    

Создать типы сообщений

  1. Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать типы сообщений для диалога. Поскольку на объекты Service Broker часто имеются ссылки в нескольких экземплярах Database Engine, большинству объектов компонента Service Broker присваиваются имена в формате URI. Это помогает обеспечить уникальность имен на нескольких компьютерах. Оба типа сообщений указывают, что Service Broker будет проверять правильность формата XML-документов и не будет проверять принадлежность XML к конкретной схеме.

    CREATE MESSAGE TYPE
           [//AWDB/1DBSample/RequestMessage]
           VALIDATION = WELL_FORMED_XML;
    CREATE MESSAGE TYPE
           [//AWDB/1DBSample/ReplyMessage]
           VALIDATION = WELL_FORMED_XML;
    GO
    

Создать контракт

  1. Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать контракт для диалога. Контракт указывает, что использующие его диалоги должны отправлять сообщения с типом //AWDB/1DBSample/RequestMessage из инициатора к цели, а сообщения с типом //AWDB/1DBSample/ReplyMessage – от цели к инициатору.

    CREATE CONTRACT [//AWDB/1DBSample/SampleContract]
          ([//AWDB/1DBSample/RequestMessage]
           SENT BY INITIATOR,
           [//AWDB/1DBSample/ReplyMessage]
           SENT BY TARGET
          );
    GO
    

Создать целевую службу и очередь

  1. Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать целевую службу и очередь. Поскольку ссылки на очереди из одной и той же базы данных напоминают ссылки на таблицы и представления, очередям присваиваются имена в формате таблиц и представлений. Инструкция CREATE SERVICE связывает службу с очередью TargetQueue2DB. Поэтому все сообщения, отправленные службе, будут получены в очереди TargetQueue2DB. Инструкция CREATE SERVICE указывает также, что только диалоги, использующие созданный ранее контракт //AWDB/1DBSample/SampleContract, могут использовать эту службу в качестве целевой.

    CREATE QUEUE TargetQueue1DB;
    
    CREATE SERVICE
           [//AWDB/1DBSample/TargetService]
           ON QUEUE TargetQueue1DB
           ([//AWDB/1DBSample/SampleContract]);
    GO
    

Создать вызывающую службу и очередь

  1. Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать вызывающую службу и очередь. Поскольку имя контракта не указано, никакие другие службы не могут использовать эту службу в качестве целевой.

    CREATE QUEUE InitiatorQueue1DB;
    
    CREATE SERVICE
           [//AWDB/1DBSample/InitiatorService]
           ON QUEUE InitiatorQueue1DB;
    GO
    

Следующие шаги

Вы успешно настроили базу данных AdventureWorks с тем, чтобы поддерживать диалог между службами //AWDB/1DBSample/InitiatorService и //AWDB/1DBSample/TargetService. Теперь можно завершить диалог, использующий такую настройку. См. раздел Занятие 2. Начало диалога и передача сообщений.

См. также

Другие ресурсы

ALTER DATABASE (Transact-SQL)
CREATE MESSAGE TYPE (Transact-SQL)
CREATE CONTRACT (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
Архитектура диалога
Архитектура служб

Справка и поддержка

Получение помощи по SQL Server 2005