Symptômes
Lorsque vous exécutez une requête pour sélectionner des données à partir d’un serveur lié à Oracle à l’aide du fournisseur OLE DB dans Microsoft SQL Server 2012 ou SQL Server 2014, les valeurs figurant dans la colonne Type NUMÉRIQUE peuvent être tronquées dans le résultat de la requête.
Cause
Ce problème se produit car le type Oracle NUMBER 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 s’assurer qu’aucune perte de précision ne se produit. Toutefois, cela peut entraîner des résultats incorrects si la requête nécessite un ordre de tri sur ces valeurs. Dans SQL Server 2012 SP2 CU2, le mappage est modifié en numérique (38, 0) pour permettre la représentation de clés entières volumineuses pour lesquelles certains schémas de base de données utilisent NUMBER sans précision/échelle. Cela conduit à des régressions lorsque des valeurs non entières sont nécessaires.
Résolution
Une fois ce correctif appliqué, les valeurs NUMBER dont la précision/l’échelle est inconnue sont traitées comme des valeurs doubles avec le fournisseur OLE DB. Si la précision est importante et que la plage des valeurs n’est pas assez grande, vous pouvez activer le nouvel indicateur de trace 7314 qui commencerait à traiter ces valeurs comme numériques (38, 10).
Le problème a été résolu pour la première fois 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
À propos des mises à jour cumulatives pour SQL Server
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :
- Dernière mise à jour cumulative pour SQL Server 2014 SP1
- Dernière mise à jour cumulative pour SQL Server 2014
- Dernière mise à jour cumulative pour SQL Server 2012 SP2
Solution de contournement
Pour contourner ce problème, commencez par convertir le champ Oracle du type NUMÉRIQUE en un type de données entièrement pris en charge par SQL Server.
État
Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « Produits concernés ».
Exclusion de responsabilité de tiers
Les produits tiers mentionnés dans le présent article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft exclut toute garantie, implicite ou autre, concernant les performances ou la fiabilité de ces produits.