实现内部激活

本教程适用于不熟悉 Service Broker,但熟悉数据库概念和 Transact-SQL 语句的用户。本教程通过说明如何实现内部激活存储过程来处理 Service Broker 消息,帮助新用户入门。

学习内容

本教程介绍如何使用内部激活存储过程来创建支持简单的请求-答复 Service Broker 会话所需的数据库对象。然后,启动会话并使用它来传输消息。

每个 Service Broker 会话都有两个端点:会话发起方和目标。在请求-答复会话中,我们将请求消息从发起方发送到目标,目标会返回一个答复消息。Service Broker 内部激活可以在处理消息时运行一个存储过程。如果同时传输多个消息,则 Service Broker 可以运行该存储过程的多个副本。本教程介绍如何创建可在目标接收请求消息的存储过程,以及如何将目标配置为使用内部激活运行此存储过程。

您将执行下列任务:

  • 为目标创建一个服务和队列,并为发起方创建一个服务和队列。

  • 创建请求消息类型和答复消息类型。

  • 创建约定,指定请求消息从发起方传递到目标并且答复消息从目标传递到发起方。

  • 创建一个存储过程,该存储过程接收来自目标队列的请求消息,并向发起方发送答复消息。

  • 更改目标队列以启用存储过程的内部激活。

然后执行一个简单会话:

  • 启动会话。

  • 从发起方向目标发送一个请求。

  • 然后, Service Broker 会激活存储过程。该存储过程将在目标处接收请求,并会向发起方发送答复。

  • 在发起方处接收答复。

  • 在会话的发起方结束会话。

  • 然后,Service Broker 将再次激活该存储过程,接着该存储过程会在会话的目标方结束会话。

对于其两端在同一 数据库引擎 实例中的会话,其消息不通过网络传输。数据库引擎 安全性和权限将限制对授权主体的访问。此方案不需要网络加密。

本教程分为三课:

  • 第 1 课:创建基本会话对象
    在本课中,将创建支持基本 Service Broker 会话所需的消息类型、约定、服务和队列。

  • 第 2 课:创建内部激活过程
    在本课中,将创建接收来自目标队列的消息的存储过程,然后更改目标队列以指定内部激活。

  • 第 3 课:启动会话并传输消息
    在本课中,将通过启动会话并将请求消息从发起方传输到目标来完成一个基本会话。内部激活存储过程将接收该请求消息,并返回一个答复消息。然后,您在会话的发起方结束会话,存储过程在会话的目标方结束会话。

  • 第 4 课:删除会话对象
    在本课中,将删除为支持会话而创建的对象。

要求

为了完成本教程,您应当熟悉 Transact-SQL 语言并熟悉如何使用 SQL Server Management Studio 中的 数据库引擎 查询编辑器。您必须是AdventureWorks2008R2 示例数据库的 db_ddladmindb_owner 固定数据库角色的成员,或者是 sysadmin 固定服务器角色的成员。

您的系统必须安装了下列软件: