Update: Eine SELECT-Abfrage liefert unerwartet eine falsche Anzahl der Zeilen in SQL Server 2005 Mobile Edition und SQL Server 2005 Compact Edition

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

Auf dieser Seite

Problembeschreibung

Wenn Sie eine SELECT-Abfrage in Microsoft SQL Server 2005 Mobile Edition und Microsoft SQL Server 2005 Compact Edition ausführen, gibt die Abfrage unerwartet eine falsche Anzahl von Zeilen zurück. Dieses Problem tritt auf, wenn folgenden Bedingungen erfüllt sind:
  • Die SELECT-Abfrage enthält eine Exklusionsverknüpfung.
  • Eines der beiden verknüpften Tabellen ist einen Index in der verknüpften Spalte. Die anderen Tabelle besitzt kein Index auf die Spalten.
Beispielsweise die folgende Abfrage in SQL Server 2005 Mobile Edition ausführen:
select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
Hinweis in diesem Beispiel T1-Tabelle besitzt einen Index für die Spalte Spalte Tabelle T2 verfügt nicht über einen Index für Spalte SP1.

Ursache

Dieses Problem, da der Abfrageoptimierer den vorherigen Plan nicht vollständig verworfen. Der Abfrageoptimierer berücksichtigt mehrere Abfragepläne, bevor der Abfrageoptimierer entscheidet, für den besten Plan eine Abfrage ausführen. In einigen Fällen kann der Abfrageoptimierer einen Plan finden, der einen Index, verwendet um die Bedingung bewerten. Der Abfrageoptimierer kann jedoch später einen besseren Plan finden. In diesem Fall verwirft der Abfrageoptimierer den vorherigen Plan, der besseren Plan verwendet.

Lösung

Verwenden Sie eine der folgenden Methoden, um dieses Problem zu beheben:
  • Erstellen Sie einen Index für die verknüpfte Spalte auf der zweiten Tabelle.
  • Löschen Sie den Index der verknüpften Spalte in der ersten Tabelle.
Hinweis: Im Beispiel im Abschnitt "Problembeschreibung" ist die verknüpfte Spalte der zweiten Tabelle T2.Col1. Die verknüpfte Spalte auf der ersten Tabelle ist T1.Col.

Status

Microsoft hat bestätigt, dass dies einen Fehler in den Microsoft-Produkten ist, die im Abschnitt "Gilt für" aufgeführt sind.

Weitere Informationen

Schritte zum Reproduzieren des Problems

  1. Führen Sie die folgenden Anweisungen für eine Datenbank in SQL Server 2005 Mobile Edition:
    CREATE TABLE T1 (COL INT);
    GO;
    CREATE INDEX T1_IDX ON T1 (COL);
    GO;
    INSERT INTO T1 VALUES (1);
    INSERT INTO T1 VALUES (2);
    INSERT INTO T1 VALUES (3);
    GO;
    CREATE TABLE T2 (COL1 INT, COL2 INT);
    GO;
    INSERT INTO T2 VALUES (1,1);
    INSERT INTO T2 VALUES (2,2);
    INSERT INTO T2 VALUES (3,3);
    GO;
  2. Führen Sie folgende Anweisung:
    select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
    treten im Abschnitt "Problembeschreibung" beschriebene Problem.

Eigenschaften

Artikel-ID: 933697 - Geändert am: Dienstag, 13. März 2007 - Version: 1.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft SQL Server 2005 Mobile Edition
  • Microsoft SQL Server 2005 Compact Edition
Keywords: 
kbmt kbtshoot kbexpertiseadvanced kbbug KB933697 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: 933697
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.

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