第 3 课:完成目标会话对象

在本课程中,您将学习创建链接服务器和从目标数据库引擎实例到发起方实例的路由。从与目标实例运行在同一计算机上的 Management Studio 副本中执行这些步骤。

过程

创建对发起方对象的引用

  • 复制以下代码并将其粘贴到查询编辑器窗口中。更改 FROM FILE 子句以引用您在第 2 课的步骤 4 中将 InstInitiatorCertficate.cer 文件复制到其中的文件夹。然后,运行代码以创建发起方用户并请求发起方证书。

    USE InstTargetDB
    GO
    CREATE USER InitiatorUser WITHOUT LOGIN;
    
    CREATE CERTIFICATE InstInitiatorCertificate
       AUTHORIZATION InitiatorUser
       FROM FILE = 
    N'C:\storedcerts\$ampleSSBCerts\InstInitiatorCertificate.cer';
    GO
    

创建路由

  • 复制以下代码并将其粘贴到查询编辑器窗口中。将字符串 MyInitiatorComputer 更改为运行发起方实例的计算机的名称。然后,运行代码以创建指向目标服务和发起方服务的路由,并创建将 InitiatorUser 与发起方服务路由相关联的远程服务绑定。

    以下 CREATE ROUTE 语句假定目标实例中没有重复的服务名称。如果目标实例中的多个数据库包含多个具有相同名称的服务,请使用 BROKER_INSTANCE 字句指定要对其打开会话的数据库。

    DECLARE @Cmd NVARCHAR(4000);
    
    SET @Cmd = N'USE InstTargetDB;
    CREATE ROUTE InstInitiatorRoute
    WITH SERVICE_NAME =
           N''//InstDB/2InstSample/InitiatorService'',
         ADDRESS = N''TCP://MyInitiatorComputer:4022'';';
    
    EXEC (@Cmd);
    
    SET @Cmd = N'USE msdb
    CREATE ROUTE InstTargetRoute
    WITH SERVICE_NAME =
            N''//TgtDB/2InstSample/TargetService'',
         ADDRESS = N''LOCAL''';
    
    EXEC (@Cmd);
    GO
    GRANT SEND
          ON SERVICE::[//TgtDB/2InstSample/TargetService]
          TO InitiatorUser;
    GO
    CREATE REMOTE SERVICE BINDING InitiatorBinding
          TO SERVICE N'//InstDB/2InstSample/InitiatorService'
          WITH USER = InitiatorUser;
    GO
    

后续步骤

现在,您已成功地将目标数据库配置为支持与发起方数据库进行 Service Broker 会话。接下来,您将在发起方数据库中开始一个会话并将请求消息发送到目标服务。请参阅第 4 课:启动对话