Update: Ineffizienter Verwendung des LIKE-Klausel mit Jet OLEDB-Anbieter

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 311159 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn Sie eine SQL-Abfrage mit Microsoft Jet OLE DB-Provider 4.0 ausführen, und Sie eine LIKE-Klausel auf eine verknüpfte SQL Server-Tabelle anwenden, wird die LIKE-Klausel nicht ordnungsgemäß vom Microsoft Jet-Abfrageprozessor in SQL Server weitergeleitet. Dies führt in einer weniger effizient allgemeine Abfrage, da alle Zeilen zuerst von SQL Server lokal von Jet abgerufen werden.

Beachten Sie, nachdem alle Zeilen von Jet lokal abgerufen werden, die LIKE-Klausel intern auf das endgültige Ergebnis angewendet wird bevor das Ergebnis zurück an den Client gesendet, daher ist das endgültige Ergebnis denselben Satz von Zeilen.

Lösung

Installieren Sie das neueste Microsoft Jet 4.0 Servicepack, um dieses Problem zu beheben. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
239114So Erhalten Sie das neueste Service Pack für die Microsoft Jet 4.0-Datenbank-Engine

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt. Dieses Problem wurde in Jet 4.0 Service Pack 6 (SP6) behoben.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Erstellen Sie eine neue Microsoft Access-Datenbank mit dem Namen "C:\DB1.MDB".
  2. Öffnen Sie C:\DB1.MDB in Microsoft Access und erstellen Sie eine verknüpfte Tabelle für die Authors -Tabelle befindet sich in der pubs- Datenbank auf SQL Server. Halten Sie den Standardnamen der verknüpften Tabelle der Dbo_authors .
  3. Führen Sie die folgende Abfrage, die mit Microsoft Jet OLE DB-Provider 4.0 für die Access-Datenbank C:\DB1.MDB.
    SELECT * from dbo_authors WHERE state LIKE 'M%'
    					
Wenn Sie auf dem Back-End Server mit SQL Server mithilfe des Dienstprogramms SQL Server Profiler überwachen, sehen Sie sich, dass die folgenden SQL-Anweisungen zu SQL Server die, die angibt, dass der Abfrageoptimierer von Microsoft Jet wie Kriterien anwenden, nach dem Abrufen aller Zeilen aus der Authors -Tabelle wurde gesendet werden. Beachten Sie, dass alle nicht kritische SQL-Anweisungen wurden entfernt, und Kommentare beschreiben verschiedene SQL­Anweisungen, die von Microsoft Jet gesendet hinzugefügt wurden.
-- 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 
				
Wenn Sie die identische mit Microsoft Access ODBC-Treiber SQL-Abfrage ausführen, die LIKE-Klausel wird ordnungsgemäß weitergeleitet zu SQL Server in der ersten SQL-Anweisung, was zu einer wesentlich effizienter allgemeine Abfrage.

Eigenschaften

Artikel-ID: 311159 - Geändert am: Mittwoch, 12. Oktober 2005 - Version: 1.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft OLE DB Provider for Jet 4.0
Keywords: 
kbmt kbhotfixserver kbqfe kbbug kbfix kbqfe KB311159 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 311159
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.

Ihr Feedback an uns

 

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