Microsoft distribuuje opravy systému Microsoft SQL Server 2008 jako jeden soubor ke stažení. Vzhledem k tomu, že opravy jsou kumulativní, obsahuje každá nová verze všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze opravy pro SQL Server 2008.
Příznaky
Podívejte se na tento scénář:
- V Microsoft SQL Server 2008 máte dotaz, který používá funkci ROW_NUMBER společně s levým vnějším spojením.
- Vytvoříte příkaz SELECT, který používá dotaz jako poddotaz a vrací jedinečné řádky pomocí klíčového slova DISTINCT.
- Spustíte tento příkaz SELECT.
V tomto scénáři se může zobrazit nesprávný výsledek. Levé vnější spojení je nesprávně ignorováno.
Poznámka: Další informace o tom, jak reprodukovat tento problém, naleznete v dílčí části "Postup pro reprodukci tohoto problému" v části "Další informace".
Řešení
Informace o kumulativní aktualizaci
SQL Server 2008 R2
Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 6. Další informace o získání tohoto balíčku kumulativní aktualizace pro SQL Server 2008 R2 naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
2489376 Balíček kumulativní aktualizace 6 pro SQL Server 2008 R2 Poznámka: Buildy jsou kumulativní, a proto každá nová verze opravy obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozího vydání opravy SQL Server 2008 R2. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
981356 Buildy SQL Server 2008 R2, které byly vydány po vydání verze SQL Server 2008 R2
SQL Server 2008 Service Pack 1
Oprava, která tento problém řeší, byla poprvé vydána v kumulativní aktualizaci 11 pro SQL Server 2008 Service Pack 1.
Další informace o tomto balíčku kumulativních aktualizací naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
2413738 Balíček kumulativní aktualizace 11 pro SQL Server 2008 Service Pack 1Poznámka: Vzhledem k tomu, že buildy jsou kumulativní, obsahuje každá nová verze opravy všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze opravy pro SQL Server 2008. Společnost Microsoft doporučuje zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
970365 Buildy SQL Server 2008 vydané po vydání aktualizace Service Pack 1 SQL Server 2008 Opravy hotfix pro Microsoft SQL Server 2008 se vytváří pro konkrétní SQL Server aktualizace Service Pack. Opravu hotfix pro SQL Server 2008 Service Pack 1 je nutné nainstalovat k instalaci systému SQL Server 2008 Service Pack 1. Ve výchozím nastavení jsou všechny opravy hotfix poskytované v aktualizaci Service Pack pro SQL Server zahrnuty do další aktualizace Service Pack pro SQL Server.
SQL Server 2008 Service Pack 2
Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 2 pro SQL Server 2008 Service Pack 2. Další informace o tomto balíčku kumulativních aktualizací naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
2467239 Balíček kumulativní aktualizace 2 pro SQL Server 2008 Service Pack 2Poznámka Vzhledem k tomu, že buildy jsou kumulativní, obsahuje každá nová verze opravy všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze opravy SQL Server 2008. Společnost Microsoft doporučuje zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
2402659 Buildy SQL Server 2008 vydané po vydání aktualizace Service Pack 2 SQL Server 2008 Opravy hotfix pro Microsoft SQL Server 2008 se vytváří pro konkrétní SQL Server aktualizace Service Pack. Opravu hotfix pro SQL Server 2008 Service Pack 2 je nutné nainstalovat pro instalaci systému SQL Server 2008 Service Pack 2. Ve výchozím nastavení jsou všechny opravy hotfix poskytované v aktualizaci Service Pack pro SQL Server zahrnuty do další aktualizace Service Pack pro SQL Server.
Stav
Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.
Další informace
Postup pro reprodukci tohoto problému
Spusťte následující příkazy. Tyto příkazy vytvoří dvě tabulky a vloží do nich nějaká data.
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)Spusťte následující příkaz. Tento příkaz používá funkci ROW_NUMBER společně s levým vnějším spojením.
select a1, row_number() over (partition by a1 order by a1) as a3 from A left join B ON A.a1 = B.b1Spusťte následující příkaz. Tento příkaz používá dotaz v kroku 2 jako poddotaz:
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
Poznámka: Pokud dojde k tomuto problému, vrátí dotaz v kroku 3 nesprávný výsledek.
Reference
Další informace o funkci ROW_NUMBER a vnějších spojeních naleznete na následujících webech služby MSDN (web MSDN (Microsoft Developer Network)):
Další informace o modelu přírůstkové údržby pro SQL Server naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
935897 Tým SQL Server poskytuje k poskytování oprav hotfix pro hlášené problémy model přírůstkové údržby
Další informace o schématu pojmenování aktualizací pro aktualizace serveru SQL Server naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
822499 Nové schéma pojmenování balíčků aktualizací softwaru Microsoft SQL Server Další informace o terminologii aktualizací softwaru naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
824684 Popis standardní terminologie používané k popisu aktualizací softwaru společnosti Microsoft