OLE DB 访问接口对 SQL 的支持级别决定了 SQL Server 2005 如何有效地将分布式查询操作委托给 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 通知它所支持的优化功能。
请参阅
概念
分布式查询
用于分布式查询的 OLE DB 访问接口参考
DBPROPVAL_SQL_SUBMINIMUM 语法
SQLPROPSET_OPTHINTS 属性集程序设计