ADO.NET 2.0中的查询通知

http://tech.ddvip.com   2008年01月22日    社区交流

内容摘要:学习如何使用ADO.NET 2.0和SQL Server 2005中新的通知技术处理即席数据刷新。

  现在我们已经了解了所有相关的概念和语义,接下来我们将从三个角度深入研究查询通知是如何工作的:

  1.SQL Server的查询通知是如何实现的?可选的分发器是如何工作的?

  2.SqlClient的SqlDependency和SqlNotificationRequest是如何在客户层/中间层工作的?

  3.ASP.NET 2.0是如何支持SqlDependency的?

  SQL Server 2005中的查询通知

  在服务器一级,SQL Server分批处理客户端发送的查询。每个查询(可以将查询看作是SqlCommand.CommandText属性)只能包含一个批,尽管每个批可以包含多个T-SQL语句。SqlCommand还可以执行存储过程或者用户定义的函数,这些对象也可以包含多个T-SQL语句。在SQL Server 2005中,客户端发送的查询中还包含了其它三条信息:用于投递通知的Service Broker的service、通知标识符(一个字符串)、以及通知的超时值。如果查询请求中存在这三条信息并且查询包含了SELECT或者EXECUTE语句,那么SQL Server将“监视”该查询产生的所有结果集是否因为其他SQL Server会话而改变。如果产生了多个结果集,例如执行了某个存储过程,那么SQL Server将“监视”所有的结果集。

  那么我所说的“监视”结果集是指什么?SQL Server又是如何完成该任务的呢?对结果集的变更检测是SQL Server数据库引擎的一部分,使用了SQL Server 2000中用于索引视图同步的变更检测机制。在SQL Server 2000中,Microsoft引入了索引视图的概念。 SQL Server中的视图包含了对单张表或者多张表的列的查询。 每个视图对象都有名称,可以像使用表名那样使用视图名称,例如:

CREATE VIEW WestCoastAuthors
AS
SELECT * FROM authors
WHERE state IN ('CA', 'WA', 'OR')

  现在您就可以使用视图了,就像在查询中使用表一样:

来源:51CTO    责编:豆豆技术应用

正在加载评论...