Partager via


Programmation du jeu de propriétés SQLPROPSET_OPTHINTS

Les fournisseurs OLE DB individuels peuvent prendre en charge des fonctionnalités SQL au-delà de celles définies dans DBPROPVAL_SQL_SUBMINIMUM, mais pas toutes les fonctionnalités de DBPROPVAL_SQL_ODBC_CORE ou DBPROPVAL_SQL_ANSI92_ENTRY. L'optimiseur de requêtes SQL Server peut utiliser certaines des fonctionnalités prises en charge par ces pilotes pour augmenter les performances des requêtes distribuées. Ces fournisseurs peuvent employer le jeu de propriétés SQLPROPSET_OPTHINTS pour informer SQL Server des fonctionnalités qu'ils prennent en charge et qui susceptibles d'accélérer les requêtes distribuées.

Bien que le jeu de propriétés SQLPROPSET_OPTHINTS soit défini dans la documentation de SQL Server, les développeurs de fournisseurs OLE DB doivent coder la prise en charge du jeu de propriétés dans leurs fournisseurs. Une fois cette prise en charge codée dans le fournisseur, SQL Server l'utilise pour optimiser les performances des requêtes distribuées.

Les fournisseurs OLE DB qui prennent en charge DBPROPVAL_SQL_ANSI92_ENTRY ou DBPROPVAL_SQL_ODBC_CORE n'ont pas besoin des propriétés SQLPROPSET_OPTHINTS, à l'exception de SQLPROP_DATELITERALS. Ces fournisseurs doivent prendre en charge toutes les fonctionnalités couvertes par le jeu de propriétés SQLPROPSET_OPTHINTS (à l'exception de SQLPROP_DATELITERALS) pour pouvoir assumer DBPROPVAL_SQL_ANSI92_ENTRY ou DBPROPVAL_SQL_ODBC_CORE.

Le tableau suivant répertorie les propriétés signalées par le biais de SQLPROPSET_OPTHINTS.

Propriété

Description

SQLPROP_ANSILIKE

Indique que la clause LIKE est prise en charge telle qu'elle est définie dans le niveau d'entrée ISO, avec les caractères génériques % et _.

SQLPROP_DATELITERALS

Indique que le fournisseur autorise les littéraux datetime ou les constantes, conformément à la syntaxe Transact-SQL.

SQLPROP_DYNAMICSQL

Indique que le fournisseur prend en charge la syntaxe des marqueurs de paramètres ODBC à l'aide de points d'interrogation ( ? ).

SQLPROP_INNERJOIN

Indique que le fournisseur prend en charge les références aux tables multiples dans la clause WHERE, à condition qu'il ne s'agisse pas de références à des jointures externes.

SQLPROP_GROUPBY

Indique que le fournisseur prend en charge les clauses GROUP BY et HAVING dans une instruction SELECT. La propriété indique également que le fournisseur prend en charge les fonctions d'agrégation AVG, COUNT, MIN, MAX et SUM, à condition que DISTINCT ne soit pas spécifié comme argument d'agrégation.

SQLPROP_NESTEDQUERIES

Indique que le fournisseur prend en charge les instructions SELECT imbriquées dans la clause FROM.

SQLPROP_SQLLIKE

Indique que le fournisseur prend en charge la syntaxe LIKE SQL Server. Lorsque SQLPROP_SQLLIKE est activé, l'optimiseur peut envoyer une requête qui contient un prédicat LIKE SQL Server au serveur distant, si cela est justifié par le plan de requête. Si SQLPROP_SQLLIKE est désactivé, un prédicat SQL Server LIKE est toujours évalué localement.

SQLPROP_SUBQUERIES

Indique que le fournisseur prend en charge les sous-requêtes telles qu'elles sont définies dans le niveau d'entrée ISO.

Voici une liste des constantes utilisées pour définir le jeu de propriétés SQLPROPSET_OPTHINTS dans le code des fournisseurs 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
}