Symptômes
Lorsque vous exécutez une requête pour sélectionner des données d’un serveur lié Oracle en utilisant le fournisseur OLE DB dans Microsoft SQL Server 2012 ou SQL Server 2014, les valeurs de la colonne type de nombre risquent d’être tronquées dans le résultat de la requête.
Cause
Ce problème se produit car le type de numéro Oracle avec précision/échelle non déclarée peut ne pas avoir de mappage 1:1 clair vers un type de données SQL Server. Avant SQL Server 2012 SP2 CU2, SQL Server mappe ces valeurs à des chaînes pour vérifier qu’aucune perte de précision ne se produit. Toutefois, cela peut entraîner des résultats incorrects si la requête exige un ordre de tri sur ces valeurs. Dans SQL Server 2012 SP2 CU2, le mappage est remplacé par numérique (38, 0) pour permettre la représentation de grosses touches entières, dont certains schémas de base de données utilisent des nombres sans précision/échelle. Cela débouche sur une régression lorsque des valeurs non entières sont nécessaires.
Résolution
Après avoir appliqué ce correctif, les valeurs numériques présentant une précision/échelle inconnue sont considérées comme des valeurs double avec le fournisseur OLE DB. Si la précision est importante et que la plage de valeurs n’est pas assez grande, vous pouvez activer la nouvelle balise de suivi 7314 qui commencerait à traiter ces valeurs en tant que numeric (38, 10).
Le problème a été résolu dans la mise à jour cumulative suivante de SQL Server.
Mise à jour cumulative 1 pour SQL Server 2014 SP1 /en-us/help/3067839
Mise à jour cumulative 8 pour SQL Server 2014 /en-us/help/3067836
Mise à jour cumulative 6 pour SQL Server 2012 SP2 /en-us/help/3052468
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs et les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :
Solution de contournement
Pour contourner ce problème, convertissez le champ Oracle de type numérique en un type de données entièrement pris en charge par SQL Server.
Statut
Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».
Les produits tiers mentionnés dans le présent article proviennent de sociétés indépendantes de Microsoft. Microsoft exclut toute garantie, implicite ou autre, concernant les performances ou la fiabilité de ces produits.