对 OLE DB 访问接口在 SQL 变体方面的要求

OLE DB 访问接口对 SQL 的支持级别决定了 SQL Server 如何有效地将分布式查询操作委托给 OLE DB 访问接口。如果访问接口不支持 SQL,只是打开行集,则即使分布式查询只需要源行集中的行子集,SQL Server 也必须检索全部行集并执行全部逻辑操作。如果 OLE DB 访问接口支持很多 SQL 语法元素,则 SQL Server 可以生成更复杂的查询,使得源访问接口在向 SQL Server 返回行集之前能够筛选掉无用的行。

OLE DB 规范定义了一个 DBPROP_SQLSUPPORT 属性,通过它,访问接口可以报告其所支持的 SQL 语法等级。不同版本的 SQL Server 在分布式查询中所需的最低 SQL 支持级别为:

  • SQL Server 2005:DBPROPVAL_SQL_SUBMINIMUM

  • SQL Server 2000:DBPROPVAL_SQL_SUBMINIMUM

  • SQL Server 7.0: DBPROPVAL_SQL_ANSI92_ENTRY or DBPROPVAL_SQL_ODBC_CORE

除了支持来自基础 OLE DB 访问接口的较低级别 SQL 语法以外,SQL Server 2000 和更高版本还定义了 SQLPROPSET_OPTHINTS 属性集,访问接口可以用它来指定支持在 DBPROPVAL_SQL_SUBMINIMUM 定义之外的单独的 SQL 语法元素。如果访问接口支持用于优化分布式查询的一项或两项功能,但不支持完整的 DBPROPVAL_SQL_ANSI92_ENTRY 或 DBPROPVAL_SQL_ODBC_CORE 语法,则访问接口可以使用 SQLPROPSET_OPTHINTS 属性向 SQL Server 通知它所支持的优化功能。