KB2589980 – OPRAVA: Nesprávne výsledky alebo porušenie obmedzenia pri spustení príkazu SELECT alebo DML, ktorý používa funkciu row_number a plán paralelného vykonávania v SQL Server 2008

Vzťahuje sa na
SQL Server 2008

Spoločnosť Microsoft distribuuje opravy Microsoft SQL Server 2008 ako jeden súbor na stiahnutie. Keďže opravy sú kumulatívne, každé nové vydanie obsahuje všetky rýchle opravy a opravy zabezpečenia, ktoré boli zahrnuté v predchádzajúcom vydaní opráv SQL Server 2008.

Príznaky

Pozrite si nasledujúci scenár:

  • V programe Microsoft SQL Server 2008 sa spúšťa paralelný dotaz používajúci funkciu row_number.
  • Dotaz sa pokúsite spustiť pomocou poddotazu, ktorý je vnútri príkazu SELECT alebo príkazu jazyka na manipuláciu s údajmi (DML).

V tomto prípade sa vyskytne jeden z nasledujúcich problémov:

  • Ak spustíte dotaz v príkaze SELECT viackrát, zobrazia sa nesprávne výsledky.

  • Tabuľka môže obsahovať nesprávne údaje, ak je dotaz spustený v rámci príkazu DML. Ak tabuľka obsahuje obmedzenia, príkaz môže zlyhať s porušením obmedzenia.

    Ak tabuľka obsahuje primárny kľúč, príkaz INSERT môže napríklad zlyhať a vyskytne sa chyba porušenia primárneho kľúča.

        
Poznámka: Tieto problémy sa môžu vyskytnúť v niektorej z nasledujúcich situácií:

  • Možnosť pomôcky dotazu MAXDOP nastavíte na hodnotu, ktorá je väčšia ako 2.
  • V konfigurácii servera môžete možnosť Maximálny stupeň rovnobežnosti nastaviť na hodnotu, ktorá je väčšia ako 2.

      

Riešenie

Ak chcete vyriešiť tento problém, získajte najnovší balík Service Pack pre SQL Server 2008. Ďalšie informácie nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na príslušné číslo článku:

968382 Získanie najnovšieho balíka Service Pack pre SQL Server 2008

Alternatívne riešenie

Ak chcete obísť tento problém, použite niektorú z týchto metód:

  • Povoliť príznak sledovania 4134, ak ste použili niektorú z nasledujúcich aktualizácií:

    • Kumulatívny balík aktualizácie 6 pre SQL Server 2008 alebo novší balík kumulatívnych aktualizácií pre SQL Server 2008
    • Balík kumulatívnej aktualizácie 2 pre balík SQL Server 2008 Service Pack 1 (SP1) alebo novší balík kumulatívnych aktualizácií pre SQL Server 2008 SP1

    Ďalšie informácie o povolení príznakov závislosti nájdete na nasledujúcej webovej lokalite MSDN:

    Povolenie príznakov sledovania

  • Prečítajte si časť "Alternatívne riešenie" v článku databázy Microsoft Knowledge Base 970198. 

    Ďalšie informácie nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na príslušné číslo článku:

    970198 OPRAVA: Pri spustení dotazu, ktorý používa funkciu row_number v SQL Server 2008, sa zobrazí nesprávny výsledok