1.创建一个测试数据库

create database ServerbrokerTest

on primary(

name=ServerbrokerTest_data,

filename='C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\ServerbrokerTest_data.mdf',

size=5,

maxsize=unlimited,

filegrowth=1

)

Log on

(

name=student_log,

filename='C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\ServerbrokerTest_log.ldf',

size=1,

maxsize=20,

filegrowth=3

)

2.激活数据库的broker功能

SELECT IS_BROKER_ENABLED FROM MASTER.SYS.DATABASES

WHERE NAME='ServerbrokerTest';

成功:,说明已经激活

若不成功: ALTER DATABASE DB_BROKERTEST SET ENABLE_BROKER  激活broker功能 将其激活

3.定义消息类型

--定义消息类型,必须是格式正确的xml

USE ServerbrokerTest

GO

CREATE MESSAGE TYPE 

MessageTypeEMail --消息类型名

VALIDATION = WELL_FORMED_XML  --验证为标准xml格式

4.定义约定  定义约定名称为 ContractEMail 约定的全部者为dbo. SENT BY 用户指定哪个端点能够发送所指示的消息类型的消息.约定将记录服务能够用来拥有特定会话的消息.每一个会话都有两个端点:发起方端点(启动会话的服务)和目标端点(发起方要联系的服务).ANY代表随意.

--定义约定(消息类型和传递方向)

USE ServerbrokerTest

GO

CREATE CONTRACT ContractEMail

AUTHORIZATION dbo

(MessageTypeEMail SENT BY ANY)

5.定义队列

--定义队列  消息发出队列

USE ServerbrokerTest

GO

CREATE QUEUE dbo.QueueSENDEMail

--定义队列  接收消息的队列

USE ServerbrokerTest

GO

CREATE QUEUE dbo.QueueRECEIVEEMail

6.定义服务

--定义服务,该服务为消息发出服务,使用消息发出队列

USE ServerbrokerTest

GO

CREATE SERVICE ServiceSendEMail

AUTHORIZATION dbo ON QUEUE dbo.QueueSENDEMail

--定义服务。该服务为消息接收服务,使用接收消息队列

USE ServerbrokerTest

GO

CREATE SERVICE ServiceReceiveEMail

AUTHORIZATION dbo ON QUEUE dbo.QueueRECEIVEEMail

7.定义路由

--因为这里使用的是同一个SqlServer 实例上的同一个数据库,所以能够使用默认的路由

USE ServerbrokerTest

GO

CREATE ROUTE AutoCreatedLocal

AUTHORIZATION dbo WITH ADDRESS = N'LOCAL'

8.编写主程序

在定义好上述Service Broker 对象后,我们能够编写一段SQL代码来完毕消息异步传送和接收.

--编写主程序

--在定义好上述Service Broker 对象后,我们能够编写一段SQL代码来完毕消息异步传送和接收

--开启事务

USE ServerbrokerTest

GO

BEGIN TRAN

--定义会话变量

DECLARE @dialogid uniqueidentifier

DECLARE @emailmessage XML

--启动会话

BEGIN  DIALOG CONVERSATION @dialogid

 FROM SERVICE ServiceSendEMail

 TO SERVICE 'ServiceReceiveEMail'

 ON CONTRACT ContractEMail

 WITH ENCRYPTION =OFF  --加密功能关闭

 --定义消息变量及内容

 

 SET @emailmessage=N'<emailcontent>欢迎使用Service Broker </emailcontent>';

 

 SEND ON CONVERSATION @dialogid

 MESSAGE TYPE MessageTypeEMail

 (@emailmessage);

--结束回话

END CONVERSATION @dialogid

--提交事务

COMMIT TRAN

--查询队列的内容]

 

SELECT * FROM   dbo.QueueSENDEMail

SELECT * FROM   dbo.QueueRECEIVEEMail

SqlServer2012查询队列为空,我不知道该怎么办?

版权声明:本文博主原创文章,博客,未经同意不得转载。

SqlServer service broker 分布式系统(赵松桃)跳水 2005 数据库编程的更多相关文章

  1. SQL Server 2005 Service Broker

    一.引言 SQL Server 2005 的一个主要成就是可以实现可靠.可扩展且功能完善的数据库应用程序.与 .NET Framework 2.0 公共语言运行库 (CLR) 的集成使开发人员可以将重 ...

  2. BizTalk 开发系列(四十) BizTalk WCF-SQL Adapter读取SQL Service Broker消息

    SQL Service Broker 是在SQL Server 2005中新增的功能.Service Broker 为 SQL Server 提供队列和可靠的消息传递,可以可用来建立以异步消息为基础的 ...

  3. sql server Service Broker 相关查询

    sql server Service Broker 相关查询 -- 查看传输队列中的消息 --如果尝试从队列中移除时,列将表明哪里出现了问题 select * from sys.transmissio ...

  4. SQL问题:未启用当前数据库的 SQL Server Service Broker

    数据库分离后,附加回到数据库,然后在程序中打开调用数据库的页面,出现如下问题:“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持.如果希望使用通知,请为此数 ...

  5. 基于SQL Server 2008 Service Broker构建企业级消息系统

    注:这篇文章是为InfoQ 中文站而写,文章的地址是:http://www.infoq.com/cn/articles/enterprisemessage-sqlserver-servicebroke ...

  6. Service Broker 消息队列的方式实现数据同步

    SQL Server 2008中SQL应用系列--目录索引 导读:本文主要涉及Service Broker的基本概念及建立一个Service Broker应用程序的基本步骤. 一.前言: Servic ...

  7. The SQL Server Service Broker for the current database is not enabled

    把一个数据恢复至另一个服务器上,出现了一个异常: The SQL Server Service Broker for the current database is not enabled, and ...

  8. Service Broker应用(2):不同server间的数据传输,包含集群

    不同Server之间的数据传输,包含DB使用AlwaysOn 配置脚本: SQL Server Service Broker 跨集群通信 具体的TSQL 脚本语句如下.注意的是TSQL语句是在发送方还 ...

  9. Service Broker应用(1):简介、同server不同DB间的数据传输

    简介:SQL Server Service Broker,以下简称SSB,是一种完全基于MSSQL数据库的数据处理技术,为短时间内处理大量数据提供了一种可靠.稳定.高效的解决方案.一次同步的数据最大可 ...

随机推荐

  1. Advanced Data Structures

    Advanced Data Structures Advanced Data Structures

  2. LINUX编程学习笔记(十四) 创建进程与 父子进程内存空间

    1什么是进程:进程是一个执行中的程序 执行的程序: 代码->资源->CPU 进程有很多数据维护:进程状态/进程属性 所有进程属性采用的一个树形结构体维护 ps  -a//所有进程 ps - ...

  3. HDOJ 4862 Jump

    K路径覆盖问题,最小费用最大流.... ,费用0,Y部有N*M个节点,每一个节点向汇点连一条边,流量1,费用0,假设X部的节点x能够在一步之内到达Y部的节点y,那么就连边x->y,费用为从x格子 ...

  4. C#向并口设备发送指令以获取并口设备的状态

    using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Text; usi ...

  5. 使用ROW_NUMBER()查询:列名 'RowNumber' 无效。

    原文:使用ROW_NUMBER()查询:列名 'RowNumber' 无效. 使用ROW_NUMBER()方法查询结果集:语句如下:   select ROW_NUMBER() OVER(ORDER ...

  6. Android 的独特shell命令

    Android本来就是一个linux操作系统,所以大部分都是linux的命令,如mkdir,ls,netstat,mount,ps 等,这里就不具体介绍了, 主要介绍几个Android特有的. get ...

  7. VSTO 学习笔记(十二)自定义公式与Ribbon

    原文:VSTO 学习笔记(十二)自定义公式与Ribbon 这几天工作中在开发一个Excel插件,包含自定义公式,根据条件从数据库中查询结果.这次我们来做一个简单的测试,达到类似的目的. 即在Excel ...

  8. [非官方]ArcGIS10.2 for Desktop扩展工具包——XTools Pro

    XTools Pro 是一套为ArcGIS平台设计的矢量空间分析. 形状转换和表管理扩展工具,大大增强了 ArcGIS 的功能,使用该工具能够提高 ArcGIS 用户的效率和性能. XTools Pr ...

  9. Ubuntu下将vim配置为Python IDE(转)

    工欲善其事,必先利其器. 配置好了Django的环境,该把vim好好配置一下当做python的IDE来用. 在Windows下用惯了各种现成的工具,转到Linux下,一下没了头绪……好歹google出 ...

  10. C#-循环滚动字幕,timer,从左至右,从右至左,暂停---ShinePans

    Lable的Left属性是能够更改的,可是 Right属性不能够更改,所以我们能够利用 这个特点做自加 自减运算 using System; using System.Collections.Gene ...