Занятие 4. Начало диалога
Добавления: 15 сентября 2007 г.
На этом занятии вы узнаете, как начать диалог между двумя экземплярами Database Engine и отправлять сообщение-запрос с инициирующего экземпляра на целевой экземпляр. Выполните эти шаги из копии среды Management Studio, запущенной на том же компьютере, на котором находится инициирующий экземпляр.
Процедуры
Переключиться в базу данных InitiatorDB
Скопируйте и вставьте следующий код в окно редактора запросов. После этого выполните его, чтобы переключить контекст в базу данных InstInitiatorDB, которая инициирует диалог.
USE InstInitiatorDB; GO
Начать диалог и отправить сообщение запроса
Скопируйте и вставьте следующий код в окно редактора запросов. Затем выполните его, чтобы начать диалог и отправить сообщение-запрос к службе //TgtDB/2InstSample/TargetService в базе данных InstTargetDB. Этот код должен быть запущен единым блоком, поскольку передача дескриптора диалога из инструкции BEGIN DIALOG в инструкцию SEND производится через переменную. Пакет запускает инструкцию BEGIN DIALOG, чтобы начать диалог, а затем создает сообщение-запрос. Затем в инструкции SEND используется дескриптор диалога, чтобы отправить в этом диалоге сообщение запроса. Последняя инструкция SELECT просто отображает текст отправленного сообщения.
DECLARE @InitDlgHandle UNIQUEIDENTIFIER; DECLARE @RequestMsg NVARCHAR(100); BEGIN TRANSACTION; BEGIN DIALOG @InitDlgHandle FROM SERVICE [//InstDB/2InstSample/InitiatorService] TO SERVICE N'//TgtDB/2InstSample/TargetService' ON CONTRACT [//BothDB/2InstSample/SimpleContract] WITH ENCRYPTION = ON; SELECT @RequestMsg = N'<RequestMsg>Message for Target service.</RequestMsg>'; SEND ON CONVERSATION @InitDlgHandle MESSAGE TYPE [//BothDB/2InstSample/RequestMessage] (@RequestMsg); SELECT @RequestMsg AS SentRequestMsg; COMMIT TRANSACTION; GO
Следующие шаги
Вы успешно начали диалог и отправили сообщение-запрос целевой службе. После этого вы получите сообщение-запрос из целевой очереди и отправите ответное сообщение вызывающей службе. См. раздел Занятие 5. Получение запроса и отправка ответа.
См. также
Другие ресурсы
BEGIN DIALOG CONVERSATION (Transact-SQL)
SEND (Transact-SQL)
Service Broker Programming Basics