Programar el conjunto de propiedades SQLPROPSET_OPTHINTS

Cada uno de los proveedores OLE DB puede admitir más funcionalidad SQL de la definida en DBPROPVAL_SQL_SUBMINIMUM, pero no toda la funcionalidad de DBPROPVAL_SQL_ODBC_CORE o DBPROPVAL_SQL_ANSI92_ENTRY. El optimizador de consultas de SQL Server puede utilizar una parte de la funcionalidad que admiten estos controladores para mejorar el rendimiento de las consultas distribuidas. Estos proveedores pueden utilizar el conjunto de propiedades SQLPROPSET_OPTHINTS para indicar a SQL Server las características que admiten para agilizar las consultas distribuidas.

Aunque el conjunto de propiedades SQLPROPSET_OPTHINTS está definido en la documentación de SQL Server, los programadores de proveedores OLE DB deben incluir código que admita este conjunto de propiedades. Una vez que se haya incluido en el proveedor código que admita este conjunto de propiedades, SQL Server lo utiliza para optimizar el rendimiento de las consultas distribuidas.

Los proveedores OLE DB que admiten DBPROPVAL_SQL_ANSI92_ENTRY o DBPROPVAL_SQL_ODBC_CORE no necesitan ninguna de las propiedades de SQLPROPSET_OPTHINTS, excepto SQLPROP_DATELITERALS. Estos proveedores deben admitir toda la funcionalidad que abarca el conjunto de propiedades SQLPROPSET_OPTHINTS (excepto SQLPROP_DATELITERALS) para cumplir los requisitos de compatibilidad de DBPROPVAL_SQL_ANSI92_ENTRY o DBPROPVAL_SQL_ODBC_CORE.

En la tabla siguiente se muestran las propiedades que se presentan a través de SQLPROPSET_OPTHINTS.

Propiedad

Descripción

SQLPROP_ANSILIKE

Especifica que se admite la cláusula LIKE, tal como se define en el nivel básico del estándar ISO, con los caracteres comodín % y _.

SQLPROP_DATELITERALS

Especifica que el proveedor admite constantes o literales datetime, según la sintaxis de Transact-SQL.

SQLPROP_DYNAMICSQL

Especifica que el proveedor admite la sintaxis de marcadores de parámetros ODBC con signos de interrogación (? ).

SQLPROP_INNERJOIN

Especifica que el proveedor admite las referencias a múltiples tablas en la cláusula WHERE, siempre y cuando no sean referencias de combinación externa.

SQLPROP_GROUPBY

Especifica que el proveedor admite las cláusulas GROUP BY y HAVING en una instrucción SELECT. Esta propiedad también especifica que el proveedor admite las funciones de agregado AVG, COUNT, MIN, MAX y SUM, siempre y cuando DISTINCT no se especifique como argumento de agregado.

SQLPROP_NESTEDQUERIES

Especifica que el proveedor admite instrucciones SELECT anidadas en la cláusula FROM.

SQLPROP_SQLLIKE

Indica que el proveedor admite la sintaxis de LIKE de SQL Server. Cuando se activa SQLPROP_SQLLIKE, el optimizador puede enviar una consulta que contenga un predicado LIKE de SQL Server al servidor remoto, si esto está justificado por el plan de consulta. Si SQLPROP_SQLLIKE está desactivado, un predicado LIKE de SQL Server siempre se evalúa de forma local.

SQLPROP_SUBQUERIES

Especifica que el proveedor admite las subconsultas definidas en el nivel básico del estándar SQL-92.

A continuación, se muestran las constantes que se utilizan para definir el conjunto de propiedades SQLPROPSET_OPTHINTS en el código de los proveedores OLE DB:

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
}