SqlServer service broker 分布式系统(赵松桃)跳水 2005 数据库编程
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 数据库编程的更多相关文章
- SQL Server 2005 Service Broker
一.引言 SQL Server 2005 的一个主要成就是可以实现可靠.可扩展且功能完善的数据库应用程序.与 .NET Framework 2.0 公共语言运行库 (CLR) 的集成使开发人员可以将重 ...
- BizTalk 开发系列(四十) BizTalk WCF-SQL Adapter读取SQL Service Broker消息
SQL Service Broker 是在SQL Server 2005中新增的功能.Service Broker 为 SQL Server 提供队列和可靠的消息传递,可以可用来建立以异步消息为基础的 ...
- sql server Service Broker 相关查询
sql server Service Broker 相关查询 -- 查看传输队列中的消息 --如果尝试从队列中移除时,列将表明哪里出现了问题 select * from sys.transmissio ...
- SQL问题:未启用当前数据库的 SQL Server Service Broker
数据库分离后,附加回到数据库,然后在程序中打开调用数据库的页面,出现如下问题:“未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持.如果希望使用通知,请为此数 ...
- 基于SQL Server 2008 Service Broker构建企业级消息系统
注:这篇文章是为InfoQ 中文站而写,文章的地址是:http://www.infoq.com/cn/articles/enterprisemessage-sqlserver-servicebroke ...
- Service Broker 消息队列的方式实现数据同步
SQL Server 2008中SQL应用系列--目录索引 导读:本文主要涉及Service Broker的基本概念及建立一个Service Broker应用程序的基本步骤. 一.前言: Servic ...
- 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 ...
- Service Broker应用(2):不同server间的数据传输,包含集群
不同Server之间的数据传输,包含DB使用AlwaysOn 配置脚本: SQL Server Service Broker 跨集群通信 具体的TSQL 脚本语句如下.注意的是TSQL语句是在发送方还 ...
- Service Broker应用(1):简介、同server不同DB间的数据传输
简介:SQL Server Service Broker,以下简称SSB,是一种完全基于MSSQL数据库的数据处理技术,为短时间内处理大量数据提供了一种可靠.稳定.高效的解决方案.一次同步的数据最大可 ...
随机推荐
- 连载:面向对象葵花宝典:思想、技巧与实践(28) - 设计原则:内聚&耦合
前面通过实例解说了一个一环扣一环的面向对象的开发流程:用例模型 -> 领域模型 -> 设计模型(类模型 + 动态模型),解答了面向对象怎样做的问题.接下来我们就要讲"怎样做好面向 ...
- 千万别用模板给的list.size()巨坑
要用!list.empty()取代i<list.size();否则就不会AC了.
- 使用模板类导致error LNK2019: 无法解析的外部符号
原地址 1.定义模板类: template<class T> class Stack {....}; 2.定义模板成员函数: 每个函数头都要以相同的模板声明打头,并将类限定符改成:类名&l ...
- Struts 2.x仍然明显落后于时代。 Struts 2.x这一类老牌Web MVC开发框架仅能用于开发瘦客户端应用,无法用来开发对于交互体验要求更高的应用。
后来我在工作中陆续使用过Struts 1.x和Struts 2.x.我曾经把一个开源的基于Struts 1.x的自助式广告联盟应用移植到Spring MVC,还基于Struts 2.x做过网站开发.S ...
- birkenfeld / sphinx-contrib — Bitbucket
birkenfeld / sphinx-contrib — Bitbucket README for sphinx-contrib This repository contains a collect ...
- 关于windows系统影子账户的问题
在这之前,需要大家了解几个问题,一个是SID,一个是账号的F值. Windows账户的SID 在Windows系统中,系统会为每个用户账户建立一个唯一的安全标识符(Security Identifie ...
- 如何在WindowsPhone Bing Map控件中显示必应中国中文地图、谷歌中国中文地图。
原文:如何在WindowsPhone Bing Map控件中显示必应中国中文地图.谷歌中国中文地图. 最近正好有点业余时间,所以在做做各种地图.Bing Map控件本身就能显示必应地图,但是很遗憾微软 ...
- 在项目里交叉使用Swift和OC
Swift and Objective-C in the Same Project 在项目里交叉使用Swift和OC Swift与OC的兼容性使得你能够在项目里使用Swift+OC的方式编写应用程序, ...
- 3DMax的OFusion插件使用问题
使用OFusion将3D max场景导出为Ogre的Mesh是非经常常使用的方法.这里汇总一些问题方便查阅. 1.OFusion获取: http://download.csdn.net/detail/ ...
- 流动python - 一个极简主义event制
event至少该系统的核心,以满足: 1.存储容器事件,可以被添加到事件来删除 2.触发事件fire 守则. class Event(list): def __call__(self, *args, ...