Conditions associées aux dialectes SQL pour les fournisseurs OLE DB
Le niveau de SQL pris en charge par un fournisseur OLE DB détermine l'efficacité selon laquelle SQL Server délègue les opérations de requêtes distribuées au fournisseur OLE DB. Si un fournisseur ne prend pas en charge SQL, mais ouvre uniquement des ensembles de lignes, SQL Server doit récupérer la totalité de l'ensemble de lignes et effectuer toutes les opérations logiques, même si la requête distribuée nécessite uniquement un sous-ensemble de lignes de l'ensemble de lignes source. Si un fournisseur OLE DB prend en charge de nombreux éléments de la syntaxe SQL, SQL Server génère des requêtes plus sophistiquées qui permettent au fournisseur source de filtrer les lignes superflues avant de renvoyer l'ensemble de lignes à SQL Server.
La spécification OLE DB définit une propriété DBPROP_SQLSUPPORT par l'intermédiaire de laquelle les fournisseurs peuvent communiquer le niveau de syntaxe SQL qu'ils prennent en charge. Le niveau minimal de prise en charge SQL que nécessitent les versions de SQL Server dans des requêtes distribuées est indiqué ci-dessous :
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
Outre la prise en charge d'un niveau inférieur de syntaxe SQL dans les fournisseurs OLE DB sous-jacents, SQL Server 2000 définit un nouveau jeu de propriétés SQLPROPSET_OPTHINTS que les fournisseurs peuvent employer pour indiquer qu'ils prennent en charge des éléments de syntaxe SQL individuels au-delà de ceux définis pour DBPROPVAL_SQL_SUBMINIMUM. Si un fournisseur prend en charge une ou deux fonctionnalités susceptibles de servir à optimiser des requêtes distribuées, mais ne prend pas en charge la totalité de la syntaxe DBPROPVAL_SQL_ANSI92_ENTRY ou DBPROPVAL_SQL_ODBC_CORE, le fournisseur peut utiliser les propriétés SQLPROPSET_OPTHINTS pour indiquer à SQL Server les fonctions d'optimisation qu'il prend en charge.