KB3051993 – ÅTGÄRD: Värdet av typen TAL trunkeras när du väljer data från en Oracle-länkad server med hjälp av OLE DB-providern

Gäller för
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Symptom

När du kör en fråga för att välja data från en Oracle-länkad server med OLE DB-providern i Microsoft SQL Server 2012 eller SQL Server 2014 kan värdena i kolumnen NUMMERTYP trunkeras i frågeresultatet.

Orsak

Det här problemet uppstår eftersom Oracle NUMBER-typen med icke-deklarerad precision/skala kanske inte har en tydlig 1:1-mappning till en SQL Server -datatyp. Före SQL Server 2012 SP2 CU2 mappar SQL Server sådana värden till strängar för att se till att ingen förlust av precision uppstår. Det kan dock leda till felaktiga resultat om frågan kräver sorteringsordning på sådana värden. I SQL Server 2012 SP2 CU2 ändras mappningen till numerisk (38, 0) för att möjliggöra representation av stora heltalsnycklar som vissa databasscheman använder TAL utan precision/skala för. Det leder till regressioner när andra värden än heltal behövs.

Lösning

När du har installerat den här korrigeringen behandlas TAL-värden med okänd precision/skala som dubbla värden med OLE DB-providern. Om precisionen är viktig och värdeintervallet inte är tillräckligt stort kan du aktivera den nya spårningsflaggan 7314 som börjar behandla sådana värden som numeriska (38, 10).

Problemet åtgärdades först i följande kumulativa uppdatering av SQL Server.

Kumulativ uppdatering 1 för SQL Server 2014 SP1 /en-us/help/3067839

Kumulativ uppdatering 8 för SQL Server 2014 /en-us/help/3067836

Kumulativ uppdatering 6 för SQL Server 2012 SP2 /en-us/help/3052468

Om kumulativa uppdateringar för SQL Server

Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:

      

Lösning

Lös problemet genom att först konvertera Oracle-fältet från typen TAL till en datatyp som stöds fullt ut av SQL Server.

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".

Ansvarsfriskrivning från tredje part

De produkter från tredje part som beskrivs i den här artikeln är tillverkade av företag som är oberoende av Microsoft. Microsoft utfärdar inga som helst garantier för dessa produkters funktion och tillförlitlighet.