Requisitos do SQL Dialect para provedores OLE DB

O nível de SQL que um provedor OLE DB oferece suporte determina quão eficazmente o SQL Server delega operações de consultas distribuídas ao provedor OLE DB. Se um provedor não oferecer suporte ao SQL, mas abrir apenas conjuntos de linhas, o SQL Server deverá recuperar todo o conjunto de linhas e executar todas as operações lógicas, mesmo se a consulta distribuída apenas precisar de um subconjunto de linhas no conjunto de linhas de origem. Se um provedor OLE DB oferecer suporte a muitos elementos SQL, o SQL Server gerará consultas mais sofisticadas que permitem que o provedor de origem filtre linhas desnecessárias antes de retornar o conjunto de linhas ao SQL Server.

A especificação OLE DB define uma propriedade DBPROP_SQLSUPPORT pela qual os provedores podem relatar o nível da sintaxe SQL a que oferecem suporte. Os níveis mínimos de suporte de SQL que as versões diferentes de SQL Server necessitam nas consultas distribuídas são:

  • SQL Server 2005: DBPROPVAL_SQL_SUBMINIMUM

  • SQL Server 2000: DBPROPVAL_SQL_SUBMINIMUM

  • SQL Server 7.0: DBPROPVAL_SQL_ANSI92_ENTRY ou DBPROPVAL_SQL_ODBC_CORE

Além de oferecer suporte a um nível mais baixo de sintaxe SQL de provedores OLE DB subjacentes, o SQL Server 2000 e posterior define o conjunto de propriedades SQLPROPSET_OPTHINTS que provedores podem usar para especificar que eles oferecem suporte individual a elementos de sintaxe SQL, que estão além dos definidos por DBPROPVAL_SQL_SUBMINIMUM. Se um provedor oferecer suporte a um ou dois recursos que possam ser usados para otimizar consultas distribuídas, mas não oferecem suporte completo à sintaxe DBPROPVAL_SQL_ANSI92_ENTRY ou DBPROPVAL_SQL_ODBC_CORE, o provedor poderá usar as propriedades SQLPROPSET_OPTHINTS para notificar o SQL Server sobre os recursos de otimização para os quais há suporte.