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 2005 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 de SQL-92, 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 SQL-92. |
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
}
Voir aussi
Concepts
Requêtes distribuées
Éléments de référence du fournisseur OLE DB pour les requêtes distribuées
Conditions associées aux dialectes SQL pour les fournisseurs OLE DB