CORRECTIF : les utilisation inefficace de clause LIKE avec fournisseur OLEDB Jet

Traductions disponibles Traductions disponibles
Numéro d'article: 311159 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsque vous exécutez une requête SQL à l'aide Microsoft Jet OLEDB fournisseur 4.0 et que vous appliquez une clause LIKE dans une table SQL Server liée, la clause LIKE pas correctement transférée par le processeur de requêtes Microsoft Jet vers SQL Server. Il en résulte une requête globale moins efficace, car il de toutes les lignes sont tout d'abord récupérer à partir de SQL Server localement par Jet.

Notez qu'après que toutes les lignes sont extraits localement par Jet, la clause LIKE est appliquée en interne au résultat final avant d'envoyer le résultat au client, de sorte que le résultat final est le même ensemble de lignes.

Résolution

Pour résoudre ce problème, installez le dernier service pack Microsoft Jet 4.0. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
239114 Comment : obtenir le dernier Service Pack pour le moteur de base de données Microsoft Jet 4.0

Statut

Microsoft a confirmé que c'est un problème dans les produits Microsoft répertoriés au début de cet article. Ce problème a été résolu dans Jet 4.0 Service Pack 6 (SP6).

Plus d'informations

Procédure pour reproduire le problème

  1. Créer une nouvelle base de données Microsoft Access nommée « C:\DB1.MDB ».
  2. Ouvrez C:\DB1.MDB dans Microsoft Access et créez une table liée à la table authors située dans la base de données pubs sur votre serveur SQL Server. Conservez le nom de table attachée par défaut de dbo_authors .
  3. Exécuter la requête suivante à l'aide Microsoft Jet OLEDB fournisseur 4.0 par rapport à la base de données Access C:\DB1.MDB.
    SELECT * from dbo_authors WHERE state LIKE 'M%'
    					
Si vous surveillez le serveur de SQL Server back-end à l'aide de l'utilitaire Générateur de profils SQL Server, vous verrez que les instructions SQL suivantes sont envoyées au serveur SQL Server, indiquant que l'optimiseur de requête Microsoft Jet applique les critères LIKE après la récupération toutes les lignes de la table authors . Notez que toutes les instructions SQL non critiques ont été supprimées et commentaires ont été ajoutés à décrire les instructions SQL différents envoyées par Microsoft Jet.
-- This is sent first by Jet to fetch all key values.  
-- Note that WHERE state LIKE 'M%' is not applied here.

SELECT au_id, state FROM authors 

-- This retrieves a single row using the first key value retrieved by the
-- above SQL statement. Jet will apply the LIKE clause internally
-- before retrieving the first row.

SELECT au_id,au_lname,au_fname,phone,address,city,state,zip,contract  
FROM dbo.authors WHERE au_id = @P1 
				
si vous exécutez la requête SQL identique à l'aide de pilote ODBC Microsoft Access, la clause LIKE est correctement transférée vers SQL Server dans la première instruction SQL, ce qui une requête en générale beaucoup plus efficace.

Propriétés

Numéro d'article: 311159 - Dernière mise à jour: mercredi 12 octobre 2005 - Version: 1.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft OLE DB Provider for Jet 4.0
Mots-clés : 
kbmt kbhotfixserver kbqfe kbbug kbfix kbqfe KB311159 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 311159
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Exclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com