扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:ChinaITLab 来源:ChinaITLab 2007年9月6日
关键字: 处理器 SQL Server SQL Server 各版本 数据库
在 SQL Server 6.5 中,由于没有本机接口,需要模拟准备和执行两个阶段。可以通过下面的两种方法做到这一点。在第一种方法中,不会真正出现准备阶段。只有执行部分返回元数据(有一些选项可以做到这一点),所以 SQL Server 可以把结果的格式描述返回给应用程序。在第二种方法中,SQL Server 实际上创建一个特定存储过程,这个过程是单个用户私用的,不能共享计划。这第二种方法可能会占满 tempdb 数据库的空间,因此大多数应用程序开发人员都通过 ODBC 配置对话框中的复选框,关闭此选项,以使用第二种方法。
在 SQL Server 7.0 中,准备/执行方法是 SQL Server 的本机功能。准备好 SQL 语句之后,才会执行它。至于默认的结果集,应用程序只需要调用 sp_execute,提供准备操作生成的句柄,语句就会被执行。对于游标,与其他游标处理过程看起来很相似,事实上,它也具有相同的特性,包括如果游标是快速只前向型,还可以使用 autofetch 和 toclose。
准备/执行操作的流程如图 5 所示。
调用存储过程
存储过程一般是从 ODBC 和 OLE-DB,通过发送 SQL 语句给使用 ODBC 标准 CALL 语法调用过程的 SQL Server 来调用。其应类似于以下语句:
|
对于默认结果集,这是一个简单的流,因为这正是 RPC 消息原本要处理的对象。客户机向服务器发送 RPC 消息,并获取来自存储过程的处理结果。如果是游标,则情况稍微复杂一些,客户机需要调用 Sp_cursoropen,就像其他游标一样。Sp_cursoropen 含有内部逻辑,检测该存储过程是否只包含一条 SELECT 语句。如果是,则对该 SELECT 语句打开一个游标。如果该存储过程中不是一条 SELECT 语句,则客户机会得到一个指示,说明"我们为您打开结果集,但是我们将以流水的方式返回数据流,您可以把这个数据流提供给用户"。
存储过程执行流程如图 6 所示。
SQL Manager
前面已经提到过的 SQL Manager 驱动很多服务器处理过程,它实际上是服务器的心脏。SQL Manager 处理所有调用存储过程的请求,管理过程缓存,拥有虚拟系统存储过程,在稍后要介绍的特定查询的自动参数化过程中也要涉及。如果您有与本文类似的描述 SQL 6.5 或更老版本的文章,则不会读到有关 SQL 管理器的讨论,然而,您会读到一些完成 SQL 管理器工作的一些不同的组件。但是在 SQL Server 7.0 中,这些组件被统一为 SQL 管理器,通过系统驱动查询语句的处理。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。