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


Занятие 4. Начало диалога

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

На этом занятии вы узнаете, как начать диалог между двумя экземплярами Database Engine и отправлять сообщение-запрос с инициирующего экземпляра на целевой экземпляр. Выполните эти шаги из копии среды Management Studio, запущенной на том же компьютере, на котором находится инициирующий экземпляр.

Процедуры

Переключиться в базу данных InitiatorDB

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

    USE InstInitiatorDB;
    GO
    

Начать диалог и отправить сообщение запроса

  1. Скопируйте и вставьте следующий код в окно редактора запросов. Затем выполните его, чтобы начать диалог и отправить сообщение-запрос к службе //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

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

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