Společnost Microsoft distribuuje Microsoft SQL Server 2008 R2 Service Pack 2 (SP2) 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í verze systému SQL Server 2008 R2 Service Pack 2 – oprava.

Příznaky

Při spuštění dotazu v Microsoft SQL serveru 2008 R2 SP2 nebo Microsoft SQL Server 2012 může docházet k chybám, když platí následující podmínky:

  • Dotaz používá klauzuli Cross Apply přes výsledek klauzule Full JOIN .

  • Data tabulky jsou poskytnuta voláním uživatelem definované funkce s hodnotou tabulky v klauzuli Full JOIN .

  • Funkce přijme název sloupce jako parametr a vrátí výsledek jako tabulku.

Můžete třeba spustit dotaz podobný následujícímu:

SELECT * FROM tablename CROSS APPLY (    SELECT * FROM        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'New') s1     FULL JOIN         (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'Old') s2     ON s1.nodeName = s2.nodeName    ) s  

Poznámka K tomuto problému nedochází v Microsoft SQL serveru 2012.

Řešení

Informace o kumulativní aktualizaci

Kumulativní aktualizace 7 pro SQL Server 2012

Oprava pro tento problém byla poprvé vydána v kumulativní aktualizaci 7. Další informace o tom, jak získat tento kumulativní balíček aktualizací pro SQL Server 2012, najdete v následujícím článku znalostní báze Microsoft Knowledge Base:

2823247 Kumulativní balíček aktualizací 7 pro SQL Server 2012Poznámka Vzhledem k tomu, že buildy jsou kumulativní, každá nová oprava obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozího SQL serveru 2012 Oprava. Doporučujeme zvážit použití nejnovější opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

2692828 Buildy SQL Server 2012, které byly vydány po vydání SQL Server 2012

Kumulativní aktualizace 3 pro SQL Server 2012 SP1

Oprava pro tento problém byla poprvé vydána v kumulativní aktualizaci 3. Další informace o tom, jak získat tento kumulativní balíček aktualizací pro SQL Server 2012 SP1, najdete v následujícím článku znalostní báze Microsoft Knowledge Base:

2812412 Kumulativní balíček aktualizací 3 pro SQL Server 2012 Service Pack 1Poznámka Vzhledem k tomu, že buildy jsou kumulativní, každá nová oprava obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze aktualizace SQL Server 2012 SP1. Doporučujeme zvážit použití nejnovější opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

2772858 Buildy SQL Server 2012, které byly vydány po vydání SQL Server 2012 Service Pack 1

Kumulativní aktualizace 5 pro SQL Server 2008 R2 SP2

Oprava pro tento problém byla poprvé vydána v kumulativní aktualizaci 5. Další informace o tom, jak získat tento kumulativní balíček aktualizací pro SQL Server 2008 R2 SP 2, najdete v následujícím článku znalostní báze Microsoft Knowledge Base:

2797460 Kumulativní aktualizace 5 pro SQL Server 2008 R2 Service Pack 2Poznámka Vzhledem k tomu, že buildy jsou kumulativní, každá nová oprava obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze systému SQL Server 2008 R2 SP 2. Doporučujeme zvážit použití nejnovější opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

2730301 Sestavení SQL Server 2008 R2, která byla vydána po SQL serveru 2008 R2 Service Pack 2, byla vydána

Stav

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.

Řešení

Chcete-li tento problém vyřešit, použijte místo úplného spojení klauzuli Join . Například změníte dotaz uvedený v části Příznaky na dotaz, který se podobá následujícímu:

SELECT * FROM tablename CROSS APPLY (    SELECT * FROM        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'New') s1     FULL MERGE JOIN         (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'Old') s2     ON s1.nodeName = s2.nodeName    ) s 

Další informace

Další informace o použití klauzule Cross Apply najdete na následujícím webu Microsoft TechNet:

Obecné informace o použití klauzule CROSS APPLy

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.