Занятие 1. Создание объектов диалога
Добавления: 15 сентября 2007 г.
На этом занятии вы узнаете, как создать все объекты, которые позволяют поддерживать диалог в базе данных.
Процедуры
Включение компонента Service Broker и переключение в базу данных AdventureWorks
Скопируйте и вставьте следующий код в окно редактора запросов. Затем выполните его, чтобы убедиться, что компонент Service Broker включен в базе данных
AdventureWorks
, и переключить контекст в эту базу данных.USE master; GO ALTER DATABASE AdventureWorks SET ENABLE_BROKER; GO USE AdventureWorks; GO
Создать типы сообщений
Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать типы сообщений для диалога. Поскольку на объекты 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
Создать контракт
Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать контракт для диалога. Контракт указывает, что использующие его диалоги должны отправлять сообщения с типом //AWDB/1DBSample/RequestMessage из инициатора к цели, а сообщения с типом //AWDB/1DBSample/ReplyMessage – от цели к инициатору.
CREATE CONTRACT [//AWDB/1DBSample/SampleContract] ([//AWDB/1DBSample/RequestMessage] SENT BY INITIATOR, [//AWDB/1DBSample/ReplyMessage] SENT BY TARGET ); GO
Создать целевую службу и очередь
Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать целевую службу и очередь. Поскольку ссылки на очереди из одной и той же базы данных напоминают ссылки на таблицы и представления, очередям присваиваются имена в формате таблиц и представлений. Инструкция CREATE SERVICE связывает службу с очередью TargetQueue2DB. Поэтому все сообщения, отправленные службе, будут получены в очереди TargetQueue2DB. Инструкция CREATE SERVICE указывает также, что только диалоги, использующие созданный ранее контракт //AWDB/1DBSample/SampleContract, могут использовать эту службу в качестве целевой.
CREATE QUEUE TargetQueue1DB; CREATE SERVICE [//AWDB/1DBSample/TargetService] ON QUEUE TargetQueue1DB ([//AWDB/1DBSample/SampleContract]); GO
Создать вызывающую службу и очередь
Скопируйте и вставьте следующий код в окно редактора запросов. Затем запустите его, чтобы создать вызывающую службу и очередь. Поскольку имя контракта не указано, никакие другие службы не могут использовать эту службу в качестве целевой.
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)
Архитектура диалога
Архитектура служб