SQLPROPSET_OPTHINTS 属性集程序设计
除了在 DBPROPVAL_SQL_SUBMINIMUM 中定义的功能,各个 OLE DB 提供程序还可以支持其他一些 SQL 功能(但并非 DBPROPVAL_SQL_ODBC_CORE 或 DBPROPVAL_SQL_ANSI92_ENTRY 中的全部功能)。SQL Server 2005 查询优化器可以使用这些驱动程序所支持的某些功能来提高分布式查询的性能。这些提供程序可以使用 SQLPROPSET_OPTHINTS 属性集向 SQL Server 报告它们所支持的、可以提高分布式查询速度的功能。
尽管已在 SQL Server 文档中定义了 SQLPROPSET_OPTHINTS 属性集,但是各个 OLE DB 提供程序的开发人员必须为他们的提供程序中的属性集编写支持代码。将对此属性集的支持编入提供程序中以后,SQL Server 就可以用此属性集来优化分布式查询的性能。
支持 DBPROPVAL_SQL_ANSI92_ENTRY 或 DBPROPVAL_SQL_ODBC_CORE 的 OLE DB 提供程序除了需要 SQLPROP_DATELITERALS 外,不需要其他任何 SQLPROPSET_OPTHINTS 属性。这些提供程序必须支持 SQLPROPSET_OPTHINTS 属性集(SQLPROP_DATELITERALS 除外)所涉及的全部功能,以便有资格支持 DBPROPVAL_SQL_ANSI92_ENTRY 或 DBPROPVAL_SQL_ODBC_CORE。
下表列出了通过 SQLPROPSET_OPTHINTS 报告的属性。
属性 | 说明 |
---|---|
SQLPROP_ANSILIKE |
指定像在 SQL-92 Entry Level 中定义的那样支持 LIKE 子句,并包含 % 和 _ 通配符。 |
SQLPROP_DATELITERALS |
指定提供程序支持在每个 Transact-SQL 语法中使用 datetime 文字或常量。 |
SQLPROP_DYNAMICSQL |
指定提供程序支持 ODBC 参数标记语法使用问号 ( ? )。 |
SQLPROP_INNERJOIN |
指定提供程序支持在 WHERE 子句中引用多个表,条件是这些引用不是外部联接引用。 |
SQLPROP_GROUPBY |
指定提供程序支持在 SELECT 语句中包含 GROUP BY 和 HAVING 子句。此属性还指定了提供程序支持 AVG、COUNT、MIN、MAX 和 SUM 聚合函数,条件是未指定 DISTINCT 作为聚合参数。 |
SQLPROP_NESTEDQUERIES |
指定提供程序支持在 FROM 子句中包含嵌套 SELECT 语句。 |
SQLPROP_SQLLIKE |
指明提供程序支持 SQL Server LIKE 语法。当 SQLPROP_SQLLIKE 处于打开状态时,优化器可以向远程服务器发送包含 SQL Server LIKE 谓词的查询(如果查询计划允许这样做)。如果 SQLPROP_SQLLIKE 处于关闭状态,则始终在本地对 SQL Server LIKE 谓词求值。 |
SQLPROP_SUBQUERIES |
指定提供程序像在 SQL-92 Entry Level中定义的那样支持子查询。 |
以下是用于定义 OLE DB 提供程序代码中的 SQLPROPSET_OPTHINTS 属性集的常量:
Extern const GUID SQLPROPSET_OPTHINTS =
{ 0x2344480c, 0x33a7, 0x11d1,
{ 0x9b, 0x1a, 0x0, 0x60, 0x8, 0x26, 0x8b, 0x9e }
};
enum SQLPROPERTIES
{
SQLPROP_NESTEDQUERIES = 0x4,
SQLPROP_DYNAMICSQL = 0x5,
SQLPROP_GROUPBY = 0x6,
SQLPROP_DATELITERALS = 0x7,
SQLPROP_ANSILIKE = 0x8,
SQLPROP_INNERJOIN = 0x9,
SQLPROP_SUBQUERIES = 0x10,
SQLPROP_SQLLIKE = 0x15
}
请参阅
概念
分布式查询
用于分布式查询的 OLE DB 访问接口参考
对 OLE DB 访问接口在 SQL 变体方面的要求