Condividi tramite


Programmazione del set di proprietà SQLPROPSET_OPTHINTS

Oltre alle funzionalità definite in DBPROPVAL_SQL_SUBMINIMUM, i singoli provider OLE DB possono supportare funzionalità SQL aggiuntive, ma non tutte le funzionalità di DBPROPVAL_SQL_ODBC_CORE o DBPROPVAL_SQL_ANSI92_ENTRY. L'utilizzo di alcune delle funzionalità supportate da questi driver consente a Query Optimizer di SQL Server di migliorare le prestazioni delle query distribuite. Tramite il set di proprietà SQLPROPSET_OPTHINTS, questi provider possono indicare a SQL Server le funzionalità supportate che consentono di eseguire più rapidamente le query distribuite.

Il set di proprietà SQLPROPSET_OPTHINTS è definito nella documentazione di SQL Server. Gli sviluppatori dei singoli provider OLE DB tuttavia devono definire all'interno dei provider il codice per il supporto di tale set di proprietà. Il supporto del set di proprietà definito a livello di programmazione nel provider può essere utilizzato da SQL Server per ottimizzare le prestazioni delle query distribuite.

Per i provider OLE DB che supportano DBPROPVAL_SQL_ANSI92_ENTRY o DBPROPVAL_SQL_ODBC_CORE, le proprietà SQLPROPSET_OPTHINTS non sono necessarie, ad eccezione di SQLPROP_DATELITERALS. Per poter supportare DBPROPVAL_SQL_ANSI92_ENTRY o DBPROPVAL_SQL_ODBC_CORE, tali provider devono supportare tutte le funzionalità associate al set di proprietà SQLPROPSET_OPTHINTS, a eccezione di SQLPROP_DATELITERALS.

Nella tabella seguente sono elencate le proprietà segnalate tramite SQLPROPSET_OPTHINTS.

Proprietà

Descrizione

SQLPROP_ANSILIKE

Specifica che la clausola LIKE è supportata come definito nello standard ISO Entry Level, con i caratteri jolly % e _.

SQLPROP_DATELITERALS

Specifica che il provider supporta i valori letterali di tipo datetime o le costanti in base alla sintassi Transact-SQL.

SQLPROP_DYNAMICSQL

Specifica che il provider supporta la sintassi degli indicatori dei parametri ODBC che utilizzano i punti interrogativi (? ).

SQLPROP_INNERJOIN

Specifica che il provider supporta riferimenti a più tabelle nella clausola WHERE, a condizione che non si tratti di riferimenti relativi a outer join.

SQLPROP_GROUPBY

Specifica che il provider supporta le clausole GROUP BY e HAVING in un'istruzione SELECT. Specifica inoltre che il provider supporta le funzioni di aggregazione AVG, COUNT, MIN, MAX e SUM, a condizione che DISTINCT non sia specificato come argomento di tali funzioni.

SQLPROP_NESTEDQUERIES

Specifica che il provider supporta istruzioni SELECT nidificate nella clausola FROM.

SQLPROP_SQLLIKE

Indica che il provider supporta la sintassi LIKE di SQL Server. Se SQLPROP_SQLLIKE è attiva, Query Optimizer può inviare una query contenente un predicato SQL Server LIKE al server remoto, se questa operazione è prevista dal piano della query. Se SQLPROP_SQLLIKE è disattiva, un predicato LIKE di SQL Server viene sempre valutato a livello locale.

SQLPROP_SUBQUERIES

Specifica che il provider supporta le subquery come definito nello standard ISO Entry Level.

Di seguito vengono elencate le costanti utilizzate per definire il set di proprietà SQLPROPSET_OPTHINTS nel codice dei provider 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
}