KB2433265 - FIX: Võite saada vale tulemi, kui käivitate päringu, mis kasutab funktsiooni ROW_NUMBER koos vasakpoolne välise ühendamine SQL Server 2008 ja SQL Server 2008 R2

Rakenduskoht
SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 Workgroup SQL Server 2008 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup SQL Server 2008 R2 Developer

Microsoft levitab Microsoft SQL Server 2008 parandusi ühe allalaaditava failina. Kuna parandused on kumulatiivsed, sisaldab iga uus väljaanne kõiki kiirparandusi ja kõiki turbeparandusi, mis olid kaasatud eelmises SQL Server 2008 paranduse väljaandes.

Sümptomid

Vaatame järgmist näidet.

  • Teil on päring, mis kasutab funktsiooni ROW_NUMBER koos vasakpoolse välisühendamisega rakenduses Microsoft SQL Server 2008.
  • Loote SELECT-lause, mis kasutab päringut alampäringina ja mis tagastab kordumatud read võtmesõna DISTINCT abil.
  • Käivitate selle SELECT-lause.

Selle stsenaariumi korral võite saada vale tulemi. Vasakut välist ühendamist ignoreeritakse valesti.

Märkus. Lisateavet selle probleemi taastekitamise kohta leiate jaotise "Lisateave" alamjaotisest "Juhised selle probleemi taastekitamiseks".

Lahendus

Koondvärskenduse teave

SQL Server 2008 R2

Selle probleemi lahendus anti esimest korda välja koondvärskenduses 6. Lisateavet selle koondvärskenduspaketi hankimise kohta SQL Server 2008 R2 jaoks klõpsake Microsofti teabebaasi artikli kuvamiseks järgmist artiklinumbrit:

2489376 koondvärskenduse pakett 6 SQL Server 2008 R2 märkus Kuna järgud on kumulatiivsed, iga uus parandus välja kõik kiirparandused ja kõik turbeparandused, mis olid kaasatud eelmises SQL Server 2008 R2 paranduse väljaandes. Soovitame teil kaaluda viimase paranduse väljaandmist, mis sisaldab seda kiirparandust. Microsofti teabebaasis oleva artikli kuvamiseks klõpsake järgmist artiklinumbrit.

981356 Pärast SQL Server 2008 R2 väljaandmist välja antud SQL Server 2008 R2 järgud

SQL Server 2008 Service Pack 1

Selle probleemi lahendus anti esimest korda välja koondvärskenduses 11 SQL Server 2008 hoolduspaketi Service Pack 1 jaoks.

Selle koondvärskenduspaketi kohta lisateabe saamiseks klõpsake Microsofti teabebaasi artikli kuvamiseks järgmist artiklinumbrit:

2413738 koondvärskenduse pakett 11 SQL Server 2008 Service Pack 1Note' jaoks Kuna järgud on kumulatiivsed, sisaldab iga uus parandus välja kõik kiirparandused ja kõik eelmises SQL Server 2008 paranduse väljaandes sisalduvad turbeparandused. Microsoft soovitab teil kaaluda uusima paranduse väljaandmist, mis sisaldab seda kiirparandust. Microsofti teabebaasis oleva artikli kuvamiseks klõpsake järgmist artiklinumbrit.

970365 Pärast SQL Server 2008 hoolduspaketi Service Pack 1 väljaandmist SQL Server välja antud SQL Server 2008 kiirparandusi luuakse konkreetsete SQL Server hoolduspakettide jaoks. SQL Server 2008 hoolduspaketi Service Pack 1 installimiseks peate rakendama SQL Server 2008 hoolduspaketi Service Pack 1. Vaikimisi kaasatakse SQL Server hoolduspaketis olev kiirparandus järgmisesse SQL Server hoolduspaketti.

SQL Server 2008 Service Pack 2

Selle probleemi lahendus anti esimest korda välja koondvärskenduses 2 SQL Server 2008 hoolduspaketi Service Pack 2 jaoks. Selle koondvärskenduspaketi kohta lisateabe saamiseks klõpsake Microsofti teabebaasi artikli kuvamiseks järgmist artiklinumbrit:

2467239 SQL Server 2008 Service Pack 2Note koondvärskenduspakett 2 Kuna järgud on kumulatiivsed, sisaldab iga uus parandus välja kõik kiirparandused ja kõik turbeparandused, mis olid kaasatud eelmises SQL Server 2008 paranduse väljaandes. Microsoft soovitab teil kaaluda uusima paranduse väljaandmist, mis sisaldab seda kiirparandust. Microsofti teabebaasis oleva artikli kuvamiseks klõpsake järgmist artiklinumbrit.

2402659 Pärast SQL Server 2008 hoolduspaketi Service Pack 2 väljaandmist SQL Server välja antud SQL Server 2008 kiirparandusi luuakse konkreetsete SQL Server hoolduspakettide jaoks. SQL Server 2008 hoolduspaketi 2 installimiseks peate rakendama SQL Server 2008 hoolduspaketi Service Pack 2 kiirparanduse. Vaikimisi kaasatakse SQL Server hoolduspaketis olev kiirparandus järgmisesse SQL Server hoolduspaketti.

Olek

Microsoft on kinnitanud, et see on jaotises „Rakenduskoht“ loetletud Microsofti toodete korral esinev probleem.

Veel teavet

Toimingud selle probleemi taastekitamiseks

  1. Käivitage järgmised laused. Need laused loovad kaks tabelit ja lisavad tabelitesse andmeid.

    create table A (a1 int)
    
    create table B (b1 int)
    
    
    
    insert into A values(1)
    
    insert into B values(1)
    
    insert into B values(1)
    
  2. Käivitage järgmine lause. Selles lauses kasutatakse funktsiooni ROW_NUMBER koos vasakpoolse välisühendamisega.

    select a1, row_number() over (partition by a1 order by a1) as a3
    
    from A
    
    left join B ON A.a1 = B.b1
    
  3. Käivitage järgmine lause. Selles lauses kasutatakse 2. juhises esitatud päringut alampäringina:

    select distinct a1, a3
    
    from (
    
          select a1, row_number() over (partition by a1 order by a1) as a3
    
          from A
    
          left join B ON A.a1 = B.b1
    
    ) as x
    

Märkus. 3. juhise päring tagastab probleemi ilmnemisel vale tulemi.

Viited

Funktsiooni ROW_NUMBER ja välisühenduste kohta lisateabe saamiseks külastage järgmisi Microsoft Developer Networki (MSDN) veebisaite.

SQL Server inkrementaalteenuse mudeli kohta lisateabe saamiseks klõpsake Microsofti teabebaasis oleva artikli kuvamiseks järgmist artiklinumbrit.

935897 SQL Server meeskonnalt on saadaval astmeline teenindusmudel teatatud probleemide kiirparanduste tegemiseks

SQL Server värskenduste nimetamisskeemi kohta lisateabe saamiseks klõpsake Microsofti teabebaasis oleva artikli kuvamiseks järgmist artiklinumbrit.

822499 Microsofti SQL Server tarkvaravärskenduspakettide uus nimeskeemTarkvaravärskenduste terminoloogia kohta lisateabe saamiseks klõpsake Microsofti teabebaasi artikli kuvamiseks järgmist artiklinumbrit:

824684 Microsofti tarkvaravärskenduste kirjeldamiseks kasutatava standardterminite kirjeldus