当前位置:学学看123知识中心电脑教学数据库教程Microsoft SQL Server 2000 分布式查询:OLE DB 连接» 正文

Microsoft SQL Server 2000 分布式查询:OLE DB 连接

[06-11 18:18:55]   来源:http://www.xxk123.com  数据库教程   阅读:8231

导读:SQL Server 在 Transact-SQL 字符串中使用问号 (?) 作为参数标记的带参数查询命令。带参数查询命令可以用于 SQL Server、Microsoft Jet 和 Oracle OLE DB 提供程序。对于其他提供程序,如果该提供程序支持 Command 对象的 ICommandWithParameters 属性,并且至少满足如下条件之一,则也可以使用带参数查询命令: 提供程序通过 DBPROP_SQLSUPPORT 属性指出支持 SQL Server 的 ODBC Core 级别。通过使用 IDBPProperties 支持 SQL Server 特有的属性 SQLPROP_DYNCMICSQL,提供程序指出对问号 (?) 参数标记的支持。有关详细信息,请参阅下一节“提供程序属性”。系统管理员通过设置提供程序上的选项 Dynamic Parameters 来使 SQL Server 生成带参数查询。 当 SQL Server 生成在远程执行的 SQL 文本时,表名和列名被提供程序的引用字符(IDBInfo 接口的 DBLITERAL_QUOT

Microsoft SQL Server 2000 分布式查询:OLE DB 连接,标签:sql数据库教程,access数据库教程,http://www.xxk123.com

SQL Server 在 Transact-SQL 字符串中使用问号 (?) 作为参数标记的带参数查询命令。带参数查询命令可以用于 SQL Server、Microsoft Jet 和 Oracle OLE DB 提供程序。对于其他提供程序,如果该提供程序支持 Command 对象的 ICommandWithParameters 属性,并且至少满足如下条件之一,则也可以使用带参数查询命令:

  • 提供程序通过 DBPROP_SQLSUPPORT 属性指出支持 SQL Server 的 ODBC Core 级别。

  • 通过使用 IDBPProperties 支持 SQL Server 特有的属性 SQLPROP_DYNCMICSQL,提供程序指出对问号 (?) 参数标记的支持。有关详细信息,请参阅下一节“提供程序属性”。

  • 系统管理员通过设置提供程序上的选项 Dynamic Parameters 来使 SQL Server 生成带参数查询。

当 SQL Server 生成在远程执行的 SQL 文本时,表名和列名被提供程序的引用字符(IDBInfo 接口的 DBLITERAL_QUOTE 文字)引起来。如果不支持该文字,则表名和列名不会被引起来。

如果提供程序支持带参数查询执行,SQL Server 将带参数查询执行策略视为执行一个远程表和本地表的联接。带参数查询根据由本地表中每一行生成的参数值重复执行。这种策略减少了从提供程序获取的行数,并且有利于行数较少的本地表联接到行数较多的远程表。远程联接策略可以使用 REMOTE 联接优化提示来强制执行。有关带参数查询执行的详细信息,请参阅 SQL Server Books Online。

下面是在远程查询方案中针对提供程序所进行的高级步骤:

  1. SQL Server 使用 IDBCreateCommand::CreateCommand 从 Session 对象创建 Command 对象。

  2. 如果将服务器配置选项 Remote Query Timeout 的值设置为大于零,SQL Server 将使用 ICommandProperties::SetProperties 把 Command 对象的 DBPROP_COMMANDTIMEOUT 设置为同样的值;必须调用 ICommand::SetCommandText 来将命令文本设置为已生成的 Transact-SQL 字符串。

  3. SQL Server 调用 ICommandPrepare::Prepare 来准备命令。如果提供程序不支持该接口,SQL Server 将继续第 4 步。

  4. 如果生成的查询是带参数的,SQL Server 使用 ICommandWithParameters::SetParameterInfo 来描述这些参数并使用 IAccessor::CreateAccessor 创建使用这些参数的访问器。

  5. SQL Server 调用 ICommand::Execute 来执行命令并创建行集。

  6. SQL Server 使用 IRowset 接口浏览并使用表中的行。使用 IRowset::GetNextRows 获取行,使用 IRowset::RestartPosition 来重定位行集的起始点,使用 IRowset::ReleaseRows 释放行。

用于远程查询执行的提供程序属性

如果提供程序支持的 SQL 功能没有包含在 DBPROP_SQLSUPPORT 报告的语法级别中,可以通过使用各种提供程序特有的属性来指出它们。

  • SQLPROP_GROUPBY。该属性对支持 SQL-Minimum 级别的提供程序比较有意义。它指出提供程序在 SELECT 语句中支持 GROUP BY 和 HAVING 子句。另外,它还指出提供程序支持如下五种聚合函数:MIN、MAX、SUM、COUNT 和 AVG。提供程序可能不支持在这些合计函数参数中使用 DISTINCT。

  • SQLPROP_SUBQUERIES。该属性对支持 SQL-Minimum 级别的提供程序比较有意义。它指出该提供程序支持 SQL-92 entry 级别所规定的子查询。包括 SELECT 列表中的子查询,以及 WHERE 子句中的关系子查询,IN、EXISTS、ALL 和 ANY 运算符。

  • SQLPROP_DATELITERALS。该属性对任何提供程序(包括支持 SQL-92 entry 级别的提供程序)都比较有意义。对日期时间文字的标准语法的支持不属于 SQL-92 entry 级别。该 SQL Server 特有的属性指出提供程序支持 SQL-92 标准所规定的日期时间文字语法。

  • SQLPROP_ANSILIKE。该属性对支持 SQL-Minimum 级别的提供程序比较有意义。它指出提供程序支持每个 SQL-92 entry 级别所规定的 LIKE 运算符(使用 '%' 和 '_' 作为通配符)。由于 SQL-Minimum 级别没有包括对 LIKE 的支持,所以它对支持 SQL-Minimum 级别的提供程序非常有用。

  • SQLPROP_INNERJOIN。该属性对支持 SQL-Minimum 级别的提供程序比较有意义。它指出支持在 FROM 子句中使用多个表。由于 SQL-Minimum 级别不支持联接,所以它对只支持 SQL-Minimum 级别的提供程序非常有用。但是,这并非指出了对显式 JOIN 关键字和 OUT 联接的支持。它只指出了支持在 FROM 子句使用多个表的隐含联接。

  • SQLPROP_DYNAMICSQL。该属性指出支持使用 '?' 作为参数标记。应支持参数标记在 WHERE 子句或 SELECT 列表中替代一个数量项目。对 '?' 运算符标记的支持允许 SQL Server 向提供程序发送带参数查询。

  • SQLPROP_NESTEDQUERIES。该属性指出支持在 FROM 子句中嵌套 SELECT(例如,SELECT * FROM (SELECT * FROM T))。在多种情况下,SQL Server 在生成远程执行的查询字符串时,在查询的 FROM 子句中使用嵌套的 SELECT 语句。由于对嵌套 SELECT 的支持并不是 SQL-92 entry 级别所必需的,除非提供程序也设置了本属性,否则 SQL Server 不会向提供程序委派带有嵌套 SELECT 语句的查询。另外,系统管理员也可以设置提供程序的 Nested Queries 选项,以使 SQL Server 生成用于提供程序上的嵌套查询。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]  下一页


Tag:数据库教程sql数据库教程,access数据库教程电脑教学 - 数据库教程
前一篇:关于ORACLE连接池

Copyright 学学看123 All Right Reserved.

1 2 3 4 5 6 7 8 9 10