KB2589980-FIX: nesprávné výsledky nebo porušení omezení při spuštění příkazu SELECT nebo DML používajícího funkci row_number a plán paralelního provádění v systému SQL Server 2008

Společnost Microsoft distribuuje Microsoft SQL Server 2008 opravy jako jeden soubor ke stažení. Protože jsou opravy kumulativní, každá nová verze obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozího SQL serveru 2008 Oprava.

Příznaky

Zvažte následující scénář:

  • Spustíte paralelní dotaz používající funkci ROW_NUMBER v Microsoft SQL serveru 2008.

  • Pokusíte se spustit dotaz pomocí poddotazu, který je uvnitř příkazu Select nebo příkazu pro zpracování dat (DML).

V tomto scénáři se setkáte s jedním z následujících problémů:

  • Pokud dotaz spustíte v příkazu Select mnohokrát, zobrazí se nesprávné výsledky.

  • Tabulka může obsahovat nesprávná data, pokud je dotaz spuštěn uvnitř příkazu DML. Pokud má tabulka omezení, může to selhat s porušením omezení. Například příkaz INSERT může selhat a dojde k chybě narušení primárního klíče, pokud má tabulka primární klíč.

Poznámka K těmto problémům může dojít v následujících situacích:

  • MAXDOP je nastavena na hodnotu, která je větší než 2.

  • Nastavíte možnost Maximální stupeň paralelismu na hodnotu, která je větší než 2 v konfiguraci serveru.

Řešení

Tento problém vyřešíte pomocí nejnovější aktualizace Service Pack pro SQL Server 2008. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

968382 Jak získat nejnovější aktualizaci Service Pack pro SQL Server 2008

Alternativní řešení

Jako alternativní řešení použijte jednu z následujících metod:

  • Pokud jste použili jednu z následujících aktualizací, povolte příznak trasování 4134:

    • Kumulativní balíček aktualizací 6 pro SQL Server 2008 nebo novější kumulativní balíček aktualizací pro SQL Server 2008

    • Kumulativní aktualizace 2 pro SQL Server 2008 Service Pack 1 (SP1) nebo novější kumulativní balíček aktualizací pro SQL Server 2008 SP1

    Další informace o tom, jak povolit příznaky trasování, najdete na následujícím webu MSDN:

    Jak povolit příznaky trasování

  • Odkázat na část řešení v článku 970198 znalostní báze Microsoft Knowledge Base. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

    970198 Oprava: při spuštění dotazu používajícího funkci row_number v systému SQL Server 2008 se zobrazí nesprávný výsledek

Potřebujete další pomoc?

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojit se k programu Microsoft Insider

Byly tyto informace užitečné?

Děkujeme za váš názor!

×