首页 > 新闻系统 > 编程天地 > 文章正文

Service Broker 要点

2008-04-18 09:12:21 来源:中国自学编程网 作者:佚名 点击:
--Service Broker 简介 Service Broker是使SQL Server成为一个构建可靠的分布式异步应用程序平台。

  数据库主密钥是指用于保护证书私钥的对称密钥以及数据库中存在的非对称密钥。
当创建主密钥时,会使用 Triple DES 算法以及用户提供的密码对其进行加密。
创建主密钥:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ’Pass.word1’;


--发送和接收
WAITFOR (
  RECEIVE top(1)
     @message_type = message_type_name,
     @message_body = message_body,
     @dialog       = conversation_handle
    FROM dbo.InventoryQueue
  ), TIMEOUT 2000;


为了确保分析器能知道SEND和RECEIVE正是在开始一个新命令,SEND或RECEIVE之前的命令必须以
分号(;)结束,但是WAITFOR语句是个例外。

如果忽略TIMEOUT参数,但WAITFOR语句中的RECEIVE语句是个例外。

--会话安全

--要允许使用模拟的安全上下文跨数据库访问的权限,可以把模拟数据库表示为“可信任的(TRUSTWORTHY)”
ALTER DATABASE Manufacturing SET TRUSTWORTHY ON;


--非对称密码技术用于安全地传输对称密钥,而对称密钥技术用于数据交换。

-- 路由
Service Broker路由是从服务到网络地址的映射,该网络地址就是要把消息发送到底地方。

服务的路由可以指定实例上的数据库
路由的地址是LOCAL时表示Service Broker将在SQL Server实例中查找与名称匹配的服务。
路由的地址是TRANSPORT时Service Broker将尝试使用服务的名称作为路由。
如:如果每个发起方使用它们的网络地址和端口作为FROM SERVICE的参数,目标只需要包含一个地址
TRANSPORT的通配符路由就可以把影响路由到所有的发起方。
CREATE ROUTE TransportRoute
    WITH ADDRESS = ’TRANSPORT’ ;
    
--均衡负载
如果数据库中有多个服务名称相同的路由,在会话中发送第一个消息时Service Broker将随即选择一个路由。

应用程序必须确定由哪个服务启动该会话,并使用BEGIN DIALOG 命令中的broker实例选择一个服务。
service_broker_guid
指定承载目标服务的数据库。如果有多个数据库承载一个目标服务实例,则可通过提供 service_broker_guid 与特定数据库通信。
service_broker_guid 的类型为 nvarchar(128)。若要查找数据库的 service_broker_guid,请在数据库中运行以下查询:
SELECT service_broker_guid
FROM sys.databases
WHERE database_id = DB_ID() ;

启动带特定 broker 实例的对话
该示例将启动一个对话会话,并将对话的标识符存储在 @dialog_handle 中。//Adventure-Works.com/ExpenseClient 服务是对话的发起方,而 //Adventure-Works.com/Expenses 服务是对话的目标。该对话遵循约定 //Adventure-Works.com/Expenses/ExpenseSubmission。
broker 将此对话的消息路由到 GUID a326e034-d4cf-4e8b-8d98-4d7e1926c904 标识的 broker。

DECLARE @dialog_handle UNIQUEIDENTIFIER ;
BEGIN DIALOG CONVERSATION @dialog_handle
   FROM SERVICE [//Adventure-Works.com/ExpenseClient]
   TO SERVICE ’//Adventure-Works.com/Expenses’, 
              ’a326e034-d4cf-4e8b-8d98-4d7e1926c904’
   ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission] ;
   
--转发
MESSAGE_FORWARDING = { ENABLED | DISABLED* }
确定是否将转发此端点所收到的位于其他位置的服务的消息。 
ENABLED
如果提供了转发地址,则转发消息。
DISABLED
放弃位于其他位置的服务的消息。
MESSAGE_FORWARDING_SIZE = forward_size 
指定存储要转发的消息时为要使用的端点分配的最大存储量 (MB)。
9 7 3 1 2 3 4 4 8 :

相关文章:

    无相关新闻
    无相关新闻

精彩推荐
焦点大图推荐
本类热门文章

论坛美图

广告联系 | 版权说明 | 意见建议 | 加入收藏 | 军网站群 [ 军软件园 - 军软件商城 - 军软件园论坛 ]

电信与信息服务业务经营许可证:京ICP证050203