Existe-t-il un moyen efficace de voir la cause de «des données de chaîne ou binaires seraient tronquées»?


13

Il s'agit d'un suivi de cette question . Il est également lié à cette demande de fonctionnalité de Microsoft.

Cependant, de nombreuses années se sont écoulées et plusieurs versions majeures ont atteint le marché depuis sa publication.

Question: SQL Server 2017 fournit-il un mécanisme pour faciliter la recherche de la cause première de cette erreur? Ou est-il aussi difficile d'enquêter qu'il y a environ 9 ans lorsque le problème a été signalé?


Je passe au moins 4 heures par semaine à déboguer cette seule erreur et SQL n'est même pas dans ma description de travail.
Tonny

Réponses:


20

Il n'y a eu aucun changement. SQL Server 2017 offre toujours le même message d'erreur vague et ne fournit aucun mécanisme pour découvrir la ligne / colonne incriminée.

Cet élément Connect avait plus de 1 600 votes lorsque Connect a été retiré:

Le dernier commentaire là-bas, de Microsoft, était le suivant:

Dernière mise à jour - le développeur qui y travaille comprend les défis liés à la création d'un correctif complet. Il peut être difficile de mettre à jour les informations sur les colonnes nécessaires pour générer un message d'erreur complet jusqu'à la fonction de conversion réelle de manière à ne pas affecter les performances d'insertion ou de mise à jour. Nous pouvons implémenter quelque chose de bon marché à court terme, comme enregistrer le type et la longueur des données tronquées. Il est encore trop tôt pour savoir quand un tel correctif atteindra une version publiquement visible.

Le mieux que je puisse suggérer est de voter pour cet article (et de le commenter, en décrivant la valeur commerciale que cela ajouterait pour vous).


+1. Pour ajouter une des façons moins inefficaces de découvrir l'empreinte (si vous n'avez pas de journal d'application), vous devez utiliser le profileur et le filtre (par hôte / utilisateur / application / requête / etc). Cela peut aussi être utile: nimblegecko.com/…
jean

3

Nos prières ont été exaucées comme indiqué par ce billet de blog du MDSN :

SQL Server 2019 introduit un nouveau message, avec des informations de contexte supplémentaires.

L'erreur devrait être beaucoup plus significative maintenant:

Msg 2628, niveau 16, état 1, ligne 14 Les données de chaîne ou binaires seraient tronquées dans la table «DbName.SchemaName.TableName», colonne «Col». Valeur tronquée: '...'.

De plus, la bonne nouvelle est que ce changement sera rétroporté en 2017 et 2016:

Ce nouveau message est également rétroporté vers SQL Server 2017 CU12 (et dans une prochaine SQL Server 2016 SP2 CU), mais pas par défaut. Vous devez activer l'indicateur de trace 460 pour remplacer l'ID de message 8152 par 2628, au niveau de la session ou du serveur.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.