Microsoft distribuerar Microsoft SQL Server 2008 R2 Service Pack 2 (SP2)-korrigeringar som en nedladdnings bar fil. Eftersom de här korrigeringarna är kumulativa innehåller alla nya versioner alla snabb korrigeringar och alla säkerhets korrigeringar som ingick med föregående version av SQL Server 2008 R2 Service Pack 2.
Symptom
Du kan få felaktiga resultat när du kör en fråga i Microsoft SQL Server 2008 R2 SP2 eller i Microsoft SQL Server 2012 om följande gäller:
-
Frågan använder en instruktionen kors koppling över resultatet av en full Join -sats.
-
Tabell data tillhandahålls genom att anropa en användardefinierad funktion med tabell värde i den fullständiga Join -satsen.
-
Funktionen accepterar ett kolumn namn som en parameter och returnerar resultatet som en tabell.
Du kör exempelvis en fråga som ser ut så här:
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
Obs! Det här problemet uppstår inte i Microsoft SQL Server 2012.
Lösning
Kumulativ uppdaterings information
Kumulativ uppdatering 7 för SQL Server 2012
Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 7. Om du vill veta mer om hur du hämtar det här kumulativa uppdaterings paketet för SQL Server 2012 klickar du på följande artikel nummer och läser artikeln i Microsoft Knowledge Base:
2823247 Kumulativt uppdaterings paket 7 för SQL Server 2012Obs! Eftersom build-versionerna är kumulativa innehåller varje ny korrigerings utgåva alla snabb korrigeringar och alla säkerhets korrigeringar som ingick med föregående version av SQL Server 2012. Vi rekommenderar att du använder den senaste korrigerings versionen som innehåller den här snabb korrigeringen. Om du vill veta mer klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
2692828 SQL Server 2012-versioner som släpptes efter att SQL Server 2012 släpptes
Kumulativ uppdatering 3 för SQL Server 2012 SP1
Korrigeringen för det här problemet släpptes första gången den kumulativa uppdateringen 3. Om du vill veta mer om hur du hämtar det här kumulativa uppdaterings paketet för SQL Server 2012 SP1 klickar du på följande artikel nummer och läser artikeln i Microsoft Knowledge Base:
2812412 Kumulativt uppdaterings paket 3 för SQL Server 2012 Service Pack 1Obs! Eftersom build-versionerna är kumulativa innehåller varje ny korrigerings utgåva alla snabb korrigeringar och alla säkerhets korrigeringar som ingick med den tidigare korrigerings versionen av SQL Server 2012 SP1. Vi rekommenderar att du använder den senaste korrigerings versionen som innehåller den här snabb korrigeringen. Om du vill veta mer klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
2772858 SQL Server 2012-versioner som släpptes efter att SQL Server 2012 Service Pack 1 släpptes
Kumulativ uppdatering 5 för SQL Server 2008 R2 SP2
Korrigeringen för det här problemet släpptes först i kumulativ uppdatering 5. Om du vill veta mer om hur du hämtar det här kumulativa uppdaterings paketet för SQL Server 2008 R2 SP 2 klickar du på följande artikel nummer och läser artikeln i Microsoft Knowledge Base:
2797460 Kumulativt uppdaterings paket 5 för SQL Server 2008 R2 Service Pack 2Obs! Eftersom build-versionerna är kumulativa innehåller varje ny korrigerings utgåva alla snabb korrigeringar och alla säkerhets korrigeringar som ingick med föregående version av SQL Server 2008 R2 SP 2. Vi rekommenderar att du använder den senaste korrigerings versionen som innehåller den här snabb korrigeringen. Om du vill veta mer klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:
2730301 SQL Server 2008 R2-versioner som släpptes efter SQL Server 2008 R2 Service Pack 2 släpptes
Status
Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".
Lösning
Undvik det här problemet genom att använda den fullständiga kopplingen Join -satsen i stället för en full Join -sats. Du kan till exempel ändra frågan som nämns i avsnittet "Symptom" till den frågan ser ut så här:
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
Mer information
Om du vill veta mer om hur du använder instruktionen Tvärreferensnr kan du gå till följande Microsoft TechNet-webbplats: