SQL Server服务代理指南

SQL Server服务代理指南

在Denny先生的博客中,SQL Server专家Denny Cherry讨论了SQL Server功能基础。其中一个话题主要是围绕SQL Server服务代理,和MSMQ有着相同的基础概念的消息队列(message queue)系统。无论你是一名新手还是一名专家,本篇指南都会向你提供如何建立和调整SQL Server这一新补充的相关信息。

点击下载该PDF

SQL Server服务代理概述

SQL Server服务代理能够保证消息发送顺序,总是对按顺序接收的消息做出相同的处理过程。消息可以按要求进行处理(你可以编写软件来按时间查询服务代理)或者自动地队列激活。

 

SQL Server服务代理消息类型

消息类型是服务代理相关的第一个对象。消息类型定义了消息名称、以及服务代理必须在消息发送之前要做的验证。

 

SQL Server服务代理的契约

每一个服务代理会话都需要一个契约(Contract)。这个契约定义了哪个或哪些类型的消息会被使用,以及谁(发送者和接收者)可以使用这些类型的消息。契约是在会话创建时指定的。

 

SQL Server服务代理的队列

服务代理队列是消息被发送后存储的地方,但队列中的消息是还没有被处理的。队列有点像数据库表一样,你可以用来插入数据(发送消息)以及查看表中的数据(接收消息)。

 

SQL Server服务代理的服务

服务是用于将契约绑定到队列上的。它们也用于数据库到数据库,或者服务器到服务器之间的消息路由(我们将在后面讨论路由)。

 

SQL Server服务代理的路由

路由只是在从一个服务器向另一个服务器发送服务代理消息时才会用到。它们定义了发送消息所需要的SQL Server和SQL Server将要连接的TCP端口。如果你是向一个镜像数据库发送消息,你也可以像指定主数据库一样指定该镜像数据库。

 

SQL Server服务代理的SEND命令

SEND命令是在SQL Server 2005版本引入的。它是一种类似于INSERT的命令,只是SEND只用在SQL Server服务代理中。在服务代理中,你是将数据填入一个队列,而不是数据库表中。你并不是把命令插入到队列中,而是向队列发送一个消息,这就像你向其他人发送一个电子邮件一样。

 

SQL Server服务代理的RECEIVE命令

RECEIVE命令用于从队列中获取消息,这样你就可以对message_body字段中的数据进行处理。从本质上来说,RECEIVE命令在很多情况下与SELECT语句的使用方法很相似。

 

SQL Server服务代理的消息已删除错误

我经常遇到有关消息删除的问题,可能其他人也会遇到同样的问题。你仍然能够在sys.conversation_endpoints DMV中看到该会话仍处于“会话中(CONVERSING)”状态,而不是“关闭(CLOSED)”状态。

 

改进SQL Server服务代理的性能

在高负载的服务代理环境中,通过重用服务代理会话能够大大提升服务代理的性能。为每一个消息创建和关闭会话需要的开销大约是4X,而对于接收消息的性能提升大约能达到10X。Remus Rusanu在他发布在Reusing Conversations的博客上,谈到这个估值可能更大,并且还提出了一种重用会话的解决方案。

 

监控SQL Server服务代理的运行状况

在处理SQL Server服务代理问题时,我需要一个快速简单的方式来查看服务代理的积压事务。所以我选择使用下面的这样一个小查询,它非常有效……

 
点击下载该PDF

SQL Server数据库设计与建模

 
如果把商业现货(COTS)数据建模工具与定制的数据建模应用相比,会发现它们在数据建模方面有很大的差别。
 
使用SQL Server Analysis Services MDX语句,可以很容易地实现像这种具有父子维关系类型的层次结构。
 
SQL Server 2005 中的父子维,解决了如何处理在一个表当中一些记录与本表中其它记录相关联的这样一个常见业务问题。
 
一个范围标记了刻度的一个特定区域,它有助于突出特定的值。例如,在一个间隔为1到10的刻度中,我们可能会考虑添加一个从8到10的范围来突出这些目标数值。
 
现在,双子星项目已经更名为Microsoft PowerPivot,DBA及开发人员可以将目光再转向另外一个SQL Server 2008 R2的功能:Project Madison。

对于一个有相关IT经验的人来说,从头学起PL/SQL该选什么样的书?一本好书对于学习一门新技术究竟有多大的影响?专家Dan Clamage给出了解答。

能否在Windows 64位操作系统上安装Oracle 9i数据库和Oracle Forms 6i?Oracle专家给出了自己的见解。

没有数据仓库是不可能得到太多报表的。运营系统重点关注于运营业务,不提供分析、决策支持和趋势分析。

 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录