Microsoft distribueert Microsoft SQL Server 2008 R2 Service Pack 2 (SP2)-oplossingen als één downloadbaar bestand. Aangezien de fixes cumulatief zijn, bevat elke nieuwe versie alle hotfixes en alle beveiligingsoplossingen die zijn opgenomen in de vorige SQL Server 2008 R2 Service Pack 2 fix release.
Symptomen
U ontvangt mogelijk onjuiste resultaten wanneer u een query uitvoert in Microsoft SQL Server 2008 R2 SP2 of in Microsoft SQL Server 2012 wanneer aan de volgende voorwaarden wordt voldaan:
-
De query gebruikt een Cross apply -component over het resultaat van een component Full join .
-
De tabelgegevens worden geleverd door een door de gebruiker gedefinieerde functie in de component Full join te bellen.
-
De functie accepteert een kolomnaam als parameter en levert resultaten als een tabel op.
U voert bijvoorbeeld een query uit die er ongeveer als volgt uitziet:
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
Opmerking Dit probleem doet zich niet voor in Microsoft SQL Server 2012.
Oplossing
Cumulatieve updategegevens
Cumulatieve update 7 voor SQL Server 2012
De oplossing voor dit probleem werd voor het eerst uitgebracht in cumulatieve update 7. Als u meer informatie wilt over het verkrijgen van dit cumulatieve updatepakket voor SQL Server 2012, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:
2823247 Cumulatief updatepakket 7 voor SQL Server 2012Opmerking Aangezien de builds cumulatief zijn, bevat elke nieuwe correctie release alle hotfixes en alle beveiligingsoplossingen die zijn opgenomen in de vorige versie van SQL Server 2012 fix. U wordt aangeraden om de meest recente correctie voor deze hotfix toe te passen. Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
2692828 De versies van SQL Server 2012 die zijn uitgebracht na de release van SQL Server 2012
Cumulatieve update 3 voor SQL Server 2012 SP1
De oplossing voor dit probleem werd voor het eerst uitgebracht in de cumulatieve update 3. Als u meer informatie wilt over het verkrijgen van dit cumulatieve updatepakket voor SQL Server 2012 SP1, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:
2812412 Cumulatief updatepakket 3 voor SQL Server 2012 Service Pack 1Opmerking Aangezien de builds cumulatief zijn, bevat elke nieuwe correctie release alle hotfixes en alle beveiligingsoplossingen die zijn opgenomen in de vorige versie van SQL Server 2012 SP1 correctie. U wordt aangeraden om de meest recente correctie voor deze hotfix toe te passen. Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
2772858 De versies van SQL Server 2012 die zijn uitgebracht na SQL Server 2012 Service Pack 1, zijn uitgebracht
Cumulatieve update 5 voor SQL Server 2008 R2 SP2
De oplossing voor dit probleem werd voor het eerst uitgebracht in de cumulatieve update 5. Als u meer informatie wilt over het verkrijgen van dit cumulatieve updatepakket voor SQL Server 2008 R2 SP 2, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:
2797460 Cumulatief updatepakket 5 voor SQL Server 2008 R2 Service Pack 2Opmerking Aangezien de builds cumulatief zijn, bevat elke nieuwe correctie release alle hotfixes en alle beveiligingsoplossingen die zijn opgenomen in de vorige versie van SQL Server 2008 R2 SP 2 Fix. U wordt aangeraden om de meest recente correctie voor deze hotfix toe te passen. Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
2730301 De SQL Server 2008 R2-builds die zijn uitgebracht na SQL Server 2008 R2 Service Pack 2 is uitgebracht
Status
Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.
Workaround
Om dit probleem tijdelijk op te lossen, gebruikt u het volledige join- join -component in plaats van een Full join -component. U kunt bijvoorbeeld de query wijzigen die wordt vermeld in de sectie Symptomen, zodat de query er ongeveer als volgt uitziet:
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
Meer informatie
Ga naar de volgende Microsoft TechNet-website voor meer informatie over het gebruik van de component Cross apply :
Algemene informatie over het gebruik van de CROSS APPLY-component