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数据库的数据处理技术,为短时间内处理大量数据提供了一种可靠.稳定.高效的解决方案.一次同步的数据最大可 ...
随机推荐
- Delphi Windows API判断文件共享锁定状态(使用OpenFile来判断)
一.概述 锁是操作系统为实现数据共享而提供的一种安全机制,它使得不同的应用程序,不同的计算机之间可以安全有效地共享和交换数据.要保证安全有效地操作共享数据,必须在相应的操作前判断锁的类型,然后才能确定 ...
- jquery实现菜单功能(单击展开或者关闭)-一般应用于后台
<!doctype html> <html> <head> <meta charset="gb2312"> <title> ...
- 快速学会搭建SVN服务器
原文:快速学会搭建SVN服务器 SVN是一个版本控制工具,常用于我们软件开发项目中,用来管理我们团队共同使用的代码,文档等历史版本的管理,保持代码的更新,避免混乱. 需要工具: svn安装程序:免费下 ...
- 我在开发网站后得出的asp.Net网站优化总结
原文:我在开发网站后得出的asp.Net网站优化总结 asp.Net网站优化总结: 1.数据库优化: 首先是对查询语句的优化,开发时为了图快可以不考虑,但是后期维护时就必须要优化(比如:你调用代码生成 ...
- hdu1565+hdu1569(最大点权独立集)
传送门:hdu1565 方格取数(1) 传送门:hdu1569 方格取数(2) 定理:1. 最小点权覆盖集=最小割=最大流2. 最大点权独立集=总权-最小点权覆盖集 步骤: 1. 先染色,取一个点染白 ...
- HBase经常使用操作之namespace
1.介绍 在HBase中,namespace命名空间指对一组表的逻辑分组,类似RDBMS中的database,方便对表在业务上划分.Apache HBase从0.98.0, 0.95.2两个版本号開始 ...
- c# Unicode字符串的解码
前两天工作中遇到个奇怪的问题,一个unicode字符串(即“\uXXXX”形式)变量,调用HttpUtility.UrlDecode解码过后,还是原样,要么就是乱码状态.无奈之下只能自己写一个解码函数 ...
- Struts2 拦截器具体配置过程
拦截器差点儿遍布每个程序中,所以贴出拦截器配置的具体过程,希望可以帮到大家. Struts2 拦截器具体配置过程 <interceptors> <!-- 先定义拦截器 --> ...
- SE 2014年4月16日
一. 描述BGP路由协议中 BGP路由携带 AS-PATH/ next-hop / ORIGIN / local-preference 属性的特点! BGP协议中的AS-PATH是AS列表,用来 ...
- 用Javascript评估用户输入密码的强度(Knockout版)
原文:用Javascript评估用户输入密码的强度(Knockout版) 早上看到博友6点多发的一篇关于密码强度的文章(连接),甚是感动(周末大早上还来发文). 我们来看看如果使用Knockout更简 ...