第 1 课:创建会话对象
新建日期: 2007 年 9 月 15 日
在本课中,您将学习如何生成使数据库支持数据库中某个会话的全部对象。
过程
启用 Service Broker 并切换到 AdventureWorks 数据库
复制以下代码并粘贴至查询编辑器窗口中。 然后,运行代码以确保在
AdventureWorks
数据库中启用了 Service Broker,并将上下文切换到该数据库。USE master; GO ALTER DATABASE AdventureWorks SET ENABLE_BROKER; GO USE AdventureWorks; GO
创建消息类型
复制以下代码并粘贴至查询编辑器窗口中。 然后,运行代码以创建会话的消息类型。 因为经常跨数据库引擎的多个实例引用 Service Broker 对象,所以大多数 Service Broker 对象都指定 URI 格式的名称。 这有助于确保这些对象在多个计算机之间都是唯一的。 这两个消息类型都指定 Service Broker 将只验证消息是否为格式正确的 XML 文档,而不会根据特定架构验证 XML。
CREATE MESSAGE TYPE [//AWDB/1DBSample/RequestMessage] VALIDATION = WELL_FORMED_XML; CREATE MESSAGE TYPE [//AWDB/1DBSample/ReplyMessage] VALIDATION = WELL_FORMED_XML; GO
创建约定
复制以下代码并粘贴至查询编辑器窗口中。 然后,运行该代码以创建会话的约定。 该约定指定使用它的会话必须将 //AWDB/1DBSample/RequestMessage 类型的消息从发起方发送至目标,并将 //AWDB/1DBSample/ReplyMessage 类型的消息从目标发送至发起方。
CREATE CONTRACT [//AWDB/1DBSample/SampleContract] ([//AWDB/1DBSample/RequestMessage] SENT BY INITIATOR, [//AWDB/1DBSample/ReplyMessage] SENT BY TARGET ); GO
创建目标队列和服务
复制以下代码并粘贴至查询编辑器窗口中。 然后,运行该代码以创建用于目标的队列和服务。 因为队列是以类似于表和视图的方式从同一数据库中进行引用,因此,队列名称的格式类似于表名称或视图名称的格式。 CREATE SERVICE 语句将该服务与 TargetQueue2DB 关联起来。 因此,所有发送至该服务的消息都将接收到 TargetQueue2DB 中。 CREATE SERVICE 还指定只有使用先前创建的 //AWDB/1DBSample/SampleContract 的会话才能将该服务用作目标服务。
CREATE QUEUE TargetQueue1DB; CREATE SERVICE [//AWDB/1DBSample/TargetService] ON QUEUE TargetQueue1DB ([//AWDB/1DBSample/SampleContract]); GO
创建发起方队列和服务
复制以下代码并粘贴至查询编辑器窗口中。 然后,运行代码以创建用于发起方的队列和服务。 因为没有指定约定名称,因此没有其他服务能将此服务用作目标服务。
CREATE QUEUE InitiatorQueue1DB; CREATE SERVICE [//AWDB/1DBSample/InitiatorService] ON QUEUE InitiatorQueue1DB; GO
后续步骤
您已将 AdventureWorks 成功配置为支持 //AWDB/1DBSample/InitiatorService 和 //AWDB/1DBSample/TargetService 之间的会话。 接下来,您将完成使用该配置的会话。 请参阅第 2 课:启动会话和传输消息。
请参阅
其他资源
ALTER DATABASE (Transact-SQL)
CREATE MESSAGE TYPE (Transact-SQL)
CREATE CONTRACT (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
会话体系结构
服务体系结构