KB3051993 - CORRECTIF : la valeur du type NOMBRE est tronquée lorsque vous sélectionnez des données à partir d’un serveur lié à Oracle à l’aide du fournisseur OLE DB

S’applique à
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)

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 :

      

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.