Requisitos de lenguaje SQL para proveedores OLE DB

El nivel de SQL compatible con un proveedor OLE DB determina la eficacia con la que SQL Server delegará las operaciones de consulta distribuida en este proveedor. Si un proveedor no admite SQL sino que sólo abre conjuntos de filas, SQL Server deberá recuperar el conjunto de filas completo y ejecutar todas las operaciones lógicas, aunque la consulta distribuida sólo requiera un subconjunto de filas del conjunto de filas de origen. Si un proveedor OLE DB admite la mayoría de los elementos de la sintaxis SQL, SQL Server generará consultas más sofisticadas que permitan al proveedor de origen filtrar las filas innecesarias, antes de devolver el conjunto de filas a SQL Server.

La especificación de OLE DB define una propiedad DBPROP_SQLSUPPORT a través de la cual los proveedores pueden informar acerca del nivel de sintaxis SQL que admiten. Los niveles mínimos requeridos por las distintas versiones de SQL Server en las consultas distribuidas son:

  • SQL Server 2005: DBPROPVAL_SQL_SUBMINIMUM

  • SQL Server 2000: DBPROPVAL_SQL_SUBMINIMUM

  • SQL Server 7.0: DBPROPVAL_SQL_ANSI92_ENTRY o DBPROPVAL_SQL_ODBC_CORE

Además de admitir un menor nivel de sintaxis SQL de los proveedores OLE DB subyacentes, SQL Server 2000 y posteriores definen un conjunto de propiedades SQLPROPSET_OPTHINTS que los proveedores pueden utilizar para especificar que admiten elementos individuales de la sintaxis SQL que van más allá de los definidos para DBPROPVAL_SQL_SUBMINIMUM. Si un proveedor admite una o dos características para optimizar las consultas distribuidas, pero no admite la sintaxis completa de DBPROPVAL_SQL_ANSI92_ENTRY o DBPROPVAL_SQL_ODBC_CORE, utilizará las propiedades de SQLPROPSET_OPTHINTS para notificar a SQL Server cuáles son las características de optimización que admite.