Spoločnosť Microsoft distribuuje Microsoft SQL Server 2008 R2 Service Pack 2 (SP2) opravy ako jeden súbor na stiahnutie. Pretože opravy sú kumulatívne, každé nové vydanie obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúceho SQL servera 2008 R2 Service Pack 2 opraviť uvoľnenia.
Príznaky
Pri spustení dotazu v Microsoft SQL Server 2008 R2 SP2 alebo Microsoft SQL Server 2012 sa môžu zobraziť nesprávne výsledky, ak sú splnené tieto podmienky:
-
Dotaz používa klauzulu cross na základe klauzuly úplného spojenia .
-
Údaje tabuľky sa poskytujú tak, že zavoláte používateľom definovanú funkciu definovanú používateľom v klauzule úplné spojenie .
-
Funkcia akceptuje názov stĺpca ako parameter a vráti výsledky ako tabuľku.
Napríklad spustíte dotaz, ktorý sa podobá nasledujúcemu hláseniu:
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: Tento problém sa nevyskytuje v Microsoft SQL Server 2012.
Riešenie
Kumulatívna aktualizácia informácií
Kumulatívna aktualizácia 7 pre SQL Server 2012
Oprava tohto problému bola prvýkrát vydaná v kumulatívnej aktualizácii 7. Ďalšie informácie o možnostiach získania tohto balíka kumulatívnych aktualizácií pre SQL Server 2012 nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na nasledovné číslo článku:
2823247 Kumulatívna aktualizácia balíka 7 pre SQL Server 2012Poznámka: Pretože zostavy sú kumulatívne, každé nové vydanie opraviť obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúceho SQL servera 2012 opraviť uvoľnenia. Odporúčame, aby ste zvážili uplatnenie najnovších opráv, ktoré túto rýchlu opravu obsahujú. Ď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:
2692828 Zostavy SQL servera 2012, ktoré boli vydané po vydaní SQL servera 2012
Kumulatívna aktualizácia 3 pre SQL Server 2012 SP1
Oprava tohto problému bola prvýkrát vydaná v kumulatívnej aktualizácii 3. Ďalšie informácie o možnostiach získania tohto balíka kumulatívnych aktualizácií pre SQL Server 2012 SP1 nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na nasledovné číslo článku:
2812412 Kumulatívna aktualizácia balíka 3 pre SQL Server 2012 Service Pack 1Poznámka: Pretože zostavy sú kumulatívne, každé nové vydanie opraviť obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúceho SQL servera 2012 SP1 opraviť uvoľnenia. Odporúčame, aby ste zvážili uplatnenie najnovších opráv, ktoré túto rýchlu opravu obsahujú. Ď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:
2772858 Zostavy SQL servera 2012, ktoré boli vydané po vydaní SQL servera 2012 Service Pack 1
Kumulatívna aktualizácia balíka 5 pre SQL Server 2008 R2 SP2
Oprava tohto problému bola prvýkrát vydaná v kumulatívnej aktualizácii 5. Ďalšie informácie o možnostiach získania tohto balíka kumulatívnych aktualizácií pre SQL Server 2008 R2 SP 2 nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na nasledovné číslo článku:
2797460 Kumulatívna aktualizácia balíka 5 pre SQL Server 2008 R2 Service Pack 2Poznámka: Pretože zostavy sú kumulatívne, každé nové vydanie opraviť obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúceho SQL servera 2008 R2 SP 2 opraviť uvoľnenia. Odporúčame, aby ste zvážili uplatnenie najnovších opráv, ktoré túto rýchlu opravu obsahujú. Ď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:
2730301 Zostavy SQL servera 2008 R2, ktoré boli vydané po vydaní SQL servera 2008 R2 Service Pack 2
Stav
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.
Alternatívne riešenie
Ak chcete tento problém obísť, použite klauzulu úplné zlúčenie spojenia namiesto klauzuly úplné spojenie . Napríklad môžete zmeniť dotaz, ktorý je spomenutý v časti príznaky na dotaz, ktorý sa podobá nasledujúcemu hláseniu:
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
Ďalšie informácie
Ďalšie informácie o používaní klauzuly cross , nájdete na nasledujúcej webovej lokalite Microsoft TechNet: