DetailPage-MSS-KB

Knowledge Base

Artikel ID: 933697 - Laatste beoordeling: maandag 28 maart 2011 - Wijziging: 2.0

 

Op deze pagina

Symptomen

Wanneer u een query in Microsoft SQL Server 2005 Mobile Edition en Microsoft SQL Server 2005 Compact Edition uitvoert, retourneert de query onverwacht een onjuist aantal rijen. Dit probleem treedt op in de volgende voorwaarden:
  • De selectiequery bevat inner join.
  • Een van de twee gekoppelde tabellen heeft een index gekoppelde kolom. De tabel heeft geen index op een van de kolommen.
U kunt bijvoorbeeld de volgende query uitvoeren in SQL Server 2005 Mobile Edition:
select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
OpmerkingIn dit voorbeeld heeft de tabel T1 index kolom kolom tabel T2 geen index op kolom Kol1.

Oorzaak

Dit probleem treedt op omdat queryoptimalisatie vorige plan niet volledig negeren. Meerdere queryplannen acht queryoptimalisatie voordat queryoptimalisatie besluit het beste plan een query uit te voeren. In sommige gevallen vindt queryoptimalisatie een plan dat een index wordt gebruikt om de voorwaarde te evalueren. Queryoptimalisatie vindt echter later een beter plan. In dit geval negeert queryoptimalisatie vorige plan betere planning gebruiken.

Oplossing

Dit probleem oplossen door een van de volgende methoden te gebruiken:
  • Een index maken op de gekoppelde kolom op de tweede tabel.
  • De index van de gekoppelde kolom op de eerste tabel verwijderen.
OpmerkingIn het voorbeeld in de sectie 'Symptomen' wordt de gekoppelde kolom op de tweede tabel T2.Kol1. De gekoppelde kolom in de eerste tabel is T1.COL.

Status

Microsoft heeft bevestigd dat dit is een fout in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.

Meer informatie

Stappen om het probleem te reproduceren

  1. De volgende instructies uitvoeren in een database 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. Voer de volgende instructie:
    select * from T1, T2 where T1.Col = T2.Col1 order by T1.Col
    Het probleem dat wordt beschreven in de sectie 'Symptomen' treedt op.

De informatie in dit artikel is van toepassing op:
  • Microsoft SQL Server 2005 Compact Edition
Trefwoorden: 
kbtshoot kbexpertiseadvanced kbmt KB933697 KbMtnl
Machine-translated ArticleMachine-translated Article
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:933697  (http://support.microsoft.com/kb/933697/en-us/ )
Delen
Extra ondersteuningsopties
Microsoft Community Support-forums
Neem rechtstreeks contact met ons op
Een door Microsoft gecertificeerde partner zoeken
Microsoft Store