Microsoft jagab Microsoft SQL Server 2008 R2 Service Pack 2 (SP2) fikseerib ühe allalaaditavate failidega. Kuna parandused on kumulatiivsed, sisaldab iga uus versioon kõiki Kiirparandusi ja kõiki turvaparandusi, mis kuulusid eelmiste SQL Server 2008 R2 hoolduspaketiga Service Pack 2 paranduse väljalaskeks.
Sümptomid
Kui käivitate päringu rakenduses Microsoft SQL Server 2008 R2 SP2 või Microsoft SQL Server 2012, võidakse kuvada ebaõiged tulemid, kui täidetud on järgmised tingimused.
-
Päringus kasutatakse täieliku liitumise klausli tõttu Ristviite klauslit.
-
Tabeli andmed on esitatud, kui helistate täieliku liitumise klausliga tabelile, mis on hinnatud kasutaja määratletud funktsiooniks.
-
Funktsioon aktsepteerib veeru nime parameetrina ja annab tulemiks tabelina.
Näiteks käivitate päringu, mis sarnaneb järgmisega:
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
Märkus. Seda probleemi ei esine Microsoft SQL Server 2012.
Lahendus
Kumulatiivse värskenduse teave
Kumulatiivne Update 7 SQL Server 2012
Selle probleemi parandus anti esmakordselt välja kumulatiivne Update 7. Lisateavet selle kumulatiivse värskenduspaketi SQL Server 2012 hankimiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
2823247 SQL Serveri 2012 koondvärskenduses pakett 7Märkus. Kuna järgud on kumulatiivsed, sisaldab iga uus parandus kõiki Kiirparandusi ja kõiki turvaparandusi, mis kuulusid eelmise SQL Serveri 2012 Fix väljalaskega. Soovitame teil kaaluda kõige uuemate paranduste rakendamist, mis sisaldavad seda käigultparandust. Lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
2692828 Pärast SQL Server 2012 väljaandmist väljaantud SQL Serveri 2012 järgud
Kumulatiivne Update 3 SQL Server 2012 SP1 jaoks
Selle probleemi parandus anti esmakordselt välja kumulatiivne Update 3. Lisateavet selle kumulatiivse värskenduspaketi hankimiseks SQL Server 2012 SP1 kohta klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
2812412 Kumulatiivne värskenduspakett 3 SQL Server 2012 hoolduspaketi 1 jaoksMärkus. Kuna järgud on kumulatiivsed, sisaldab iga uus parandus kõiki Kiirparandusi ja kõiki turvaparandusi, mis kuulusid eelmiste SQL Server 2012 SP1 paranduse väljalaskes. Soovitame teil kaaluda kõige uuemate paranduste rakendamist, mis sisaldavad seda käigultparandust. Lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
2772858 Pärast SQL Server 2012 hoolduspaketti 1 välja antud SQL Serveri 2012 järgud
Kumulatiivne Update 5 SQL Server 2008 R2 hoolduspaketi SP2 jaoks
Selle probleemi parandus anti esmakordselt välja kumulatiivne Update 5. Lisateavet selle kumulatiivse värskenduspaketi SQL Server 2008 R2 SP 2 kohta lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
2797460 SQL Server 2008 R2 hoolduspaketi SP2 koondvärskenduses pakett 5Märkus. Kuna järgud on kumulatiivsed, sisaldab iga uus parandus kõiki Kiirparandusi ja kõiki turvaparandusi, mis kuulusid eelmise SQL Server 2008 R2 SP 2 paranduse väljalaskeks. Soovitame teil kaaluda kõige uuemate paranduste rakendamist, mis sisaldavad seda käigultparandust. Lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:
2730301 Pärast SQL Server 2008 R2 hoolduspaketti SP2 välja antud SQL Server 2008 R2 järgud
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.
Lahendus
Selle probleemi lahendamiseks kasutage täieliku liitumise klausli asemel kogu kirjakooste liitumise klauslit. Näiteks saate muuta jaotises "Tunnused" kirjeldatud päringut, mis näeb välja järgmine:
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
Lisateave
Lisateavet selle kohta, kuidas kasutada Ristviite klauslit, leiate järgmisest Microsoft TechNeti veebisaidilt: