SQL SERVER 2005中的server broker是什么的意思

SQL SERVER 2005中的server broker是什么的意思,第1张

我也是在网上收集的,希望能帮到你。

Server Broker是SQL Server 2005中新增加功能。

一、简介(来自SQL 2K05的帮助文档)

Microsoft SQL Server 2005 Service Broker 可以帮助开发人员生成可伸缩的、安全的数据库应用程序。此项新技术是 数据库引擎 的一部分,它提供一个基于消息的通信平台,使独立的应用程序组件可以作为一个整体来运行。Service Broker 包含用于异步编程的基础结构,可用于单个数据库或单个实例中的应用程序,也可用于分布式应用程序。

Service Broker 提供了生成分布式应用程序所需的大部分基础结构,从而减少了应用程序的开发时间。利用 Service Broker ??还可以轻松缩放应用程序,以容纳应用程序接收的通信流量。

Service Broker 是 Microsoft SQL Server 2005 中的新技术,它可帮助数据库开发人员构建安全、可靠且可伸缩的应用程序。由于 Service Broker 是数据库引擎 的组成部分,因此管理这些应用程序就成为数据库日常管理的一部分。

Service Broker 为 SQL Server 提供队列和可靠的消息传递。Service Broker 对使用单个 SQL Server 实例的应用程序和在多个实例间分配工作的应用程序都适用。

在单个 SQL Server 实例中,Service Broker 提供了可靠的异步编程模型。数据库应用程序通常使用异步编程来缩短交互式响应时间,并增加应用程序总吞吐量。

二、Server Broker实现消息的发送

(一)同一实例同一数据库下的消息发送

1.准备工作:

1.1创建数据库ssbDemo

use master

go

if exists( select top 1 1

from sys.sysdatabases with(nolock)

where name=N'ssbDemo'

)

begin

drop database ssbDemo

end

create database ssbDemo

go

1.2 允许Server Broker

--check database broker states

declare @is_broker_enabled int

select top 1 @is_broker_enabled=is_broker_enabled

from sys.databases with (nolock)

where database_id=db_id(N'ssbDemo')

if @is_broker_enabled<>1

begin

--Enable SSB

alter database ssbDemo

set enable_broker

alter database ssbDemo

set trustworthy on

end

1.3创建Master Key

use ssbDemo

go

create master key

encryption by password = 'Cw24@$g'

2.创建消息

use ssbDemo

go

--Message

if exists (select top 1 1

from sys.service_message_types with(nolock)

where name='HelloWorldRequest')

begin

drop message type HelloWorldRequest

end

go

create message type [HelloWorldRequest] VALIDATION=NONE

if exists (select top 1 1

from sys.service_message_types with(nolock)

where name='HelloWorldRespone')

begin

drop message type HelloWorldRespone

end

go

create message type [HelloWorldRespone] VALIDATION=NONE

3.创建合约

--Contract

if exists (select top 1 1

from sys.service_contracts with(nolock)

where name='HelloWorldContract')

begin

drop contract HelloWorldContract

end

go

create contract [HelloWorldContract]

(

[HelloWorldRequest] sent by initiator

,[HelloWorldRespone] sent by target

)

4.创建队列和基于队列的服务

--Queue

if object_id('dbo.HelloWorldTargerQueue') is not null and

exists(select top 1 1

from sys.objects with (nolock)

where object_id=object_id('dbo.HelloWorldTargerQueue')

and type='SQ')

begin

drop queue dbo.HelloWorldTargerQueue

end

go

create queue dbo.[HelloWorldTargetQueue]

if exists (select top 1 1

from sys.services with(nolock)

where name='HelloWorldRequestService')

begin

drop service HelloWorldRequestService

end

go

create service [HelloWorldRequestService] on queue [HelloWorldTargetQueue]

(

[HelloWorldContract]

)

if object_id('dbo.HelloWorldInitiatorQueue') is not null and

exists(select top 1 1

from sys.objects with (nolock)

where object_id=object_id('dbo.HelloWorldInitiatorQueue')

and type='SQ'

)

begin

drop queue dbo.HelloWorldInitiatorQueue

end

go

Create queue dbo.[HelloWorldInitiatorQueue]

if exists (select top 1 1

from sys.services with(nolock)

where name='HelloWorldResponseService')

begin

drop service HelloWorldResponseService

end

go

create service [HelloWorldResponeService] on queue [HelloWorldInitiatorQueue]

(

[HelloWorldContract]

)

5.发送消息(Server Broker的消息发送,必须在事务中实现)

--send message

use ssbDemo

go

set nocount on

declare @conversionHandle uniqueidentifier

begin try

begin tran

--begin dialog to server

begin dialog @conversionHandle

from service [HelloWorldResponeService]

to service N'HelloWorldRequestService'

on contract [HelloWorldContract]

with encryption=off,lifetime=600

--Send message

send on conversation @conversionHandle

message type [HelloWorldRequest] (N'Hello world')

commit

end try

begin catch

--get the the error info

select error_message()

end catch

6.接受消息(同样消息的接受也必须在事务中)

--receive message from raget queue

set nocount on

declare @conversionHandle uniqueidentifier

declare @message_body nvarchar(max)

declare @message_type_name sysname

--begin transaction

begin transaction

waitfor (receive top (1)--only a piece of message

@message_type_name = message_type_name--Receiving message type

,@conversionHandle=conversation_Handle--Dialog identifier

,@message_body=message_body

from [HelloWorldTargetQueue])

--it is a HelloWorldRequset

if @message_type_name=N'HelloWorldRequest'

begin

send on conversation @conversionHandle

message type HelloWorldRespone

(N'Hello from '+@@servername)

end conversation @conversionHandle

end

--commit

commit tran

go

7.检验

7.1检查目标队列

use ssbDemo

go

--check the target queue

select * from [HelloWorldTargetQueue] with (nolock)

--go

----convert the message to nvarchar

select cast(message_body as nvarchar(max))

from [HelloWorldTargetQueue]

go

7.2检查消息接受情况

--Check receiving whether sucessfully or fail

select cast(message_body as nvarchar(max))

from [HelloWorldTargetQueue]

7.3检查消息的反应情况

--Checking response message from initiator queue

select cast(message_body as nvarchar(max))

from [HelloWorldInitiatorQueue]

? 近来有用户在电脑中遇到了RuntimeBroker进程启动和激活权限无法编辑的问题,如果想要解决这个问题的话,那么应该如何 *** 作呢?在接下来的内容中,向大家介绍一下电脑中RuntimeBroker进程启动和激活权限无法编辑的解决方法。

1、按Win+R打开运行,回车后进入注册表编辑器

2、在注册表依次展开HKEY_CLASSES_ROOT\AppID\{9CA88EE3-ACB7-47c8-AFC4-AB702511C276}

3、右击项{9CA88EE3-ACB7-47c8-AFC4-AB702511C276},选择权限

4、选中System,勾选完全控制允许,点击确定

5、如果提示拒绝访问,则点击“高级”按钮

6、若无法进入高级选项,请切换到Windows管理员账号Administator登陆并进入高级

7、将所有者改为当前用户,再回到Runtimebroker属性进行修改即可。

以上便是关于电脑中出现RuntimeBroker进程启动和激活权限无法编辑问题的具体解决方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11470650.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存