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. [Android学习笔记]EditText的使用

    EditText就是我们最常用的文本输入框 常用属性见官方文档 主要是以下几个问题: 1.取消默认获取焦点 Activity启动时候会把焦点默认停留在第一个EditText控件上 一般的解决方法是在此 ...

  2. 使用HashMap须要注意的事儿:不要暴露Map.entry给外部不可信代码Map.entrySet()

    Map/HashMap是java中一种非经常常使用的数据结构,一般我们在应用中做的事情就是调用put向容器写入数据或者是get从容器读取数据. Map.entrySet()这种方法返回了键值对的集合, ...

  3. HBase总结(二十)HBase经常使用shell命令具体说明

    进入hbase shell console $HBASE_HOME/bin/hbase shell 假设有kerberos认证,须要事先使用对应的keytab进行一下认证(使用kinit命令),认证成 ...

  4. 基于HTTP和TFTP的PXE批量自动化安装Linux系统

    CentOS 6.5 PXE自动化部署系统 拓扑图如下: 步骤: 1.  安装http服务,上传ISO文件 [root@UCS-1 ~]# yum install httpd –y [root@UCS ...

  5. 使用EXCEL设置“下拉菜单”选项功能

    原创作品.出自 "深蓝的blog" 博客.欢迎转载.转载时请务必注明出处,否则有权追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlo ...

  6. poj1860(spfa判正环)

    题目连接:http://poj.org/problem?id=1860 题意:有多种从a到b的汇率,在你汇钱的过程中还需要支付手续费,那么你所得的钱是 money=(nowmoney-手续费)*rat ...

  7. hdu1254(bfs+dfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1254 分析: 真正移动的是箱子,但是要移动箱子需要满足几个条件. 1.移动方向上没有障碍. 2.箱子后 ...

  8. centos7图形配置 firewall-config

    图形配置 firewall-config centos 7:systemctl stop firewalld.service #停止

  9. SlidingMenu开源项目滑动界面的实现总结

    先上图 须要准备的是先得在GitHub上下载ActionBarSherlock-master.zip,和SlidingMenu-master.zip这两个开源文件,然后解压这两个包,SlidingMe ...

  10. 代码重构 & 代码中的坏味道

    1.重构 1.1 为什么要重构 1.1.1 改进程序设计 程序员为了快速完成任务,在没有完全理解整体架构之前就开始写代码, 导致程序逐渐失去自己的结构.重构则帮助重新组织代码,重新清晰的体现 程序结构 ...