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-Provider i Microsoft SQL Server 2012 eller SQL Server 2014 kan värdena i kolumnen SIFFER typ trunkeras i frågeresultatet.
Orsak
Det här problemet beror på att Oracle-nummer typen med icke-deklarerad precision/skala kanske inte har en klar 1:1-mappning till en SQL Server-datatyp. Innan SQL Server 2012 SP2 CU2 mappas sådana värden till strängar för att se till att precisionen inte försvinner. Men det kan leda till felaktiga resultat om frågan kräver sorterings ordning för sådana värden. I SQL Server 2012 SP2 CU2 ändras mappningen till numeriskt (38, 0) för att tillåta åter givning av stora heltals nycklar som vissa databas scheman använder tal utan precision/skala. Detta leder till regressioner när det behövs icke-heltals värden.
Lösning
När du har installerat den här korrigeringen behandlas numeriska värden med okända precision/Scale som dubbel värden med OLE DB-providern. Om precisionen är viktig och intervallet för värdena inte är tillräckligt stort kan du aktivera den nya spårnings flaggan 7314 som skulle börja hantera sådana värden som numeriska (38, 10).
Problemet är först åtgärdat i den kumulativa uppdateringen 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
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och alla säkerhets korrigeringar som ingick i den föregående kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:
Lösning
Undvik det här problemet genom att konvertera fältet Oracle från NUMBER Type till en datatyp som stöds helt och hållet av SQL Server.
Status
Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".
De produkter från andra tillverkare som diskuteras i denna artikel tillverkas oberoende av Microsoft. Produkternas funktion eller tillförlitlighet kan därför inte garanteras.