第 4 课:开始会话

新建日期: 2007 年 9 月 15 日

在本课中,您将学习如何启动跨越两个数据库引擎实例的会话以及如何从发起方实例向目标实例发送一条请求消息。 请在与发起方实例运行在同一台计算机上的 Management Studio 副本中执行这些步骤。

过程

切换到 InitiatorDB 数据库

  1. 复制以下代码并粘贴至查询编辑器窗口中。 然后,运行代码以将上下文切换到 InstInitiatorDB 数据库,您将在其中启动该会话。

    USE InstInitiatorDB;
    GO
    

启动会话并发送请求消息

  1. 复制以下代码并粘贴至查询编辑器窗口中。 然后,运行代码以启动会话并向 InstTargetDB 中的 //TgtDB/2InstSample/TargetService 发送一条请求消息。 该代码必须运行在一个块中,因为使用了一个变量将对话句柄从 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 帮助