Programming the SQLPROPSET_OPTHINTS Property Set
Individual OLE DB providers can support some SQL functionality beyond that defined in DBPROPVAL_SQL_SUBMINIMUM, but not all the functionality in DBPROPVAL_SQL_ODBC_CORE or DBPROPVAL_SQL_ANSI92_ENTRY. The SQL Server 2005 query optimizer can use some of the functionality supported by these drivers to increase the performance of distributed queries. These providers can use the SQLPROPSET_OPTHINTS property set to inform SQL Server of the features they support that can speed distributed queries.
Although the SQLPROPSET_OPTHINTS property set is defined in the SQL Server documentation, individual OLE DB provider developers must code support for the property set in their providers. After support for this property set is coded into the provider, SQL Server uses it to optimize the performance of distributed queries.
OLE DB providers that support DBPROPVAL_SQL_ANSI92_ENTRY or DBPROPVAL_SQL_ODBC_CORE do not need any one of the SQLPROPSET_OPTHINTS properties, except for SQLPROP_DATELITERALS. These providers must support all the functionality covered by the SQLPROPSET_OPTHINTS property set (except for SQLPROP_DATELITERALS) to qualify for DBPROPVAL_SQL_ANSI92_ENTRY or DBPROPVAL_SQL_ODBC_CORE support.
The following table lists the properties that are reported through SQLPROPSET_OPTHINTS.
Property | Description |
---|---|
SQLPROP_ANSILIKE |
Specifies the LIKE clause is supported as defined in the SQL-92 Entry Level, with the % and _ wildcard characters. |
SQLPROP_DATELITERALS |
Specifies the provider supports datetime literals, or constants, as per Transact-SQL syntax. |
SQLPROP_DYNAMICSQL |
Specifies the provider supports the ODBC parameter marker syntax using question marks ( ? ). |
SQLPROP_INNERJOIN |
Specifies the provider supports references to multiple tables in the WHERE clause, as long as they are not outer join references. |
SQLPROP_GROUPBY |
Specifies the provider supports the GROUP BY and HAVING clauses in a SELECT statement. The property also specifies the provider supports the AVG, COUNT, MIN, MAX, and SUM aggregate functions, as long as DISTINCT is not specified as an aggregate argument. |
SQLPROP_NESTEDQUERIES |
Specifies the provider supports nested SELECT statements in the FROM clause. |
SQLPROP_SQLLIKE |
Indicates the provider supports the SQL Server LIKE syntax. When SQLPROP_SQLLIKE is on, the optimizer can send a query that contains a SQL Server LIKE predicate to the remote server, if doing this is justified by the query plan. If SQLPROP_SQLLIKE is off, a SQL Server LIKE predicate is always evaluated locally. |
SQLPROP_SUBQUERIES |
Specifies the provider supports subqueries as defined in the SQL-92 Entry Level. |
The following are the constants that are used to define the SQLPROPSET_OPTHINTS property set in the code of OLE DB providers:
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
}
See Also
Concepts
Distributed Queries
OLE DB Provider Reference for Distributed Queries
SQL Dialect Requirements for OLE DB Providers