第 4 课:开始对话

适用于SQL ServerAzure SQL 托管实例

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

过程

切换到 InitiatorDB 数据库

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

    USE InstInitiatorDB;
    GO
    

启动会话并发送请求消息

将以下代码复制并粘贴到“查询编辑器”窗口中,然后运行它以开始对话,并将请求消息发送到 InstTargetDB 中的 TgtDB/2InstSample/TargetService。 代码必须在一个块中运行,因为变量用于将对话句柄从 BEGIN DIALOG 语句传递到 SEND 语句。

批处理运行 BEGIN DIALOG 语句以开始对话,然后生成请求消息。 然后,它使用语句中的 SEND 对话句柄在该会话上发送请求消息。 最后 SELECT 一条语句仅显示已发送的消息的文本。

DECLARE @InitDlgHandle AS UNIQUEIDENTIFIER;
DECLARE @RequestMsg AS 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