2007-01-08

SQL Server查询处理器机制与结构(上)

来源: 本站收集整理 作者:佚名 评论 0 条
 

目录存储过程是另一类要害的客户机/服务器的交互部分。这些存储过程首先在 ODBC 的 SQL Server 6.0 中出现, 包括诸如 sp_tables 和 sp_columns 等存储过程。ODBC 和 OLE-DB API 定义了描述有关数据库对象的元数据的标准方法,这些标准需要适用于所有类型的 RDBMS 服务器,而不必调整为 SQL Server 自己的系统表。不是客户机向服务器发送对系统表的多个查询,并在客户机端建立标准的元数据视图,而是创建一组存储在服务器上的系统存储过程,并对 API 返回适当格式的信息。这种方法使得通过一次通信就可以完成很多重要的元数据请求。

为 ODBC 编写的过程已经写入文档,通常适合需要从系统表中获取信息但其他机制没有提供这种方法的情况。这使得 Transact-SQL 过程和 DB-Library 应用程序可以访问元数据,而不需要编写对 SQL Server 系统表的复杂查询,并且使应用程序不受今后 Microsoft 修改系统表的影响。

OLE DB 定义了一组架构行集,它们类似于 ODBC 的元数据,但又和它不同。它创建了一组新的目录存储过程,以更有效地为这些架构行集植入数据。但是,这组新的存储过程没有写入文档,因为这些存储过程重复了早先提供的功能。通过现有的若干种方法都可以得到元数据,因此 SQL Server 开发组决定不显露这些并没有为编程模型增加新内容的对象。

客户机与服务器的交互还有第三个方面。它最初出现在 SQL Server 6.0 中,但是没有得到普遍使用。这就是虚拟系统存储过程的概念;在 SQL Server 7.0 中起很重要的作用。当第一次为 SQL Server 6.0 开发服务器端游标时,开发人员就需要选择采取什么方法治理客户机/服务器的交互。游标并不非凡适合现有的 TDS 消息,因为这些消息答应逐行返回数据,不需要客户机指定额外的 SQL 语句。开发人员本来可以向 TDS 协议添加更多的消息,但是需要修改太多的其他组件。SQL Server 6.0 中的 TDS 版本还需要向 Sybase 版本靠拢,以便确保两者的可互操作性,于是开发人员选择了另外的处理机制。他们开发了外表看起来像是系统存储过程的新功能(服务器端游标),实际上是指向 SQL Server 代码的入口存储过程。它们被客户机应用程序使用标准的 RPC TDS 消息来调用。它们被称为虚拟系统存储过程,因为在客户机上,它们像其他存储过程那样被调用,和其他存储过程不同的是,它们并不是由简单的 SQL 语句组成。大多数虚拟系统存储过程都是私用的,并且没有写入文档。对于游标过程,所有 API 都显露其自有的一组游标 API 模型和它们自己的游标操作函数,因此没有必要为存储过程本身编写文档。即使是在 Transact-SQL 语言中,也有显露游标的语法,可以使用 DECLARE、OPEN、FETCH 等,所以完全没有必要为虚拟系统存储过程编写文档,例如 sp_cursor,因为这些过程只在内部使用。

ODBC 和 OLE DB 中出现了带参数的查询和预备/执行模型的概念。在 SQL Server 7.0 以前的版本中,这些概念是由客户机 API 中的代码实现的。在 SQL Server 7.0 中,Microsoft 为这些概念添加了对“关系服务器”的支持,并且通过新的虚拟系统存储过程显露了这种支持。本文后面还要介绍这些功能,以及服务器如何支持这些功能。通过 sp_executesql 过程对带参数的查询的支持,被认为对直接 Transact-SQL 和 DB-Library 的使用非凡有用,所以将其写入了文档。预备/执行的过程,被 ODBC 驱动程序和 OLE DB 提供程序专用。

这样,可以与 SQL Server 通信的所有客户机程序,都建立在这三组功能之上:TDS 协议、目录存储过程和虚拟系统存储过程。

服务器结构
共4页: 上一页 [1] [2] 3 [4] 下一页

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:使用SQL Server索引视图来提高性能  
下一篇:SQL Server2005数据库查询中使用CTE
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号