SQL Server 2019 renverra finalement un message d'erreur plus significatif.
Les données binaires ou les chaînes de caractères seraient tronquées => amélioration du message d'erreur
si vous avez cette erreur (en production), il n'est pas évident de voir de quelle colonne ou ligne provient cette erreur, et comment la localiser exactement.
Pour activer un nouveau comportement, vous devez utiliser DBCC TRACEON(460)
. Nouveau texte d'erreur de sys.messages
:
SELECT * FROM sys.messages WHERE message_id = 2628
2628 - Une chaîne ou des données binaires seraient tronquées dans la table '%.*ls', colonne '%.*ls'. Valeur tronquée : '%.*ls'.
Les données de type String ou Binary seraient tronquées : remplacement de la fameuse erreur 8152
Ce nouveau message est également reporté dans SQL Server 2017 CU12 (et dans une prochaine CU de SQL Server 2016 SP2), mais pas par défaut. Vous devez activer l'indicateur de suivi 460 pour remplacer le message ID 8152 par 2628, soit au niveau de la session, soit au niveau du serveur.
Notez que pour l'instant, même dans SQL Server 2019 CTP 2.0, le même drapeau de trace 460 doit être activé. Dans une future version de SQL Server 2019, le message 2628 remplacera le message 8152 par défaut.
SQL Server 2017 CU12 prend également en charge cette fonctionnalité.
Amélioration : Remplacement optionnel du message "String or binary data would be truncated" par des informations étendues dans SQL Server 2017
Cette mise à jour de SQL Server 2017 introduit un message facultatif qui contient les informations contextuelles supplémentaires suivantes.
Msg 2628, Level 16, State 6, Procedure ProcedureName, Line Linenumber
String or binary data would be truncated in table '%.*ls', column '%.*ls'.
Truncated value: '%.*ls'.
Le nouvel ID du message est 2628. Ce message remplace le message 8152 dans toute sortie d'erreur si l'indicateur de suivi 460 est activé.
db<>démonstration
MODIFIER LA CONFIGURATION DE LA PORTÉE DE LA BASE DE DONNÉES
VERBOSE_TRUNCATION_WARNINGS = { ON | OFF }
S'APPLIQUE À : SQL Server (à partir de SQL Server 2019 (15.x)) et Azure SQL Database.
Vous permet d'activer ou de désactiver le nouveau String ou les données binaires seraient tronquées. SQL Server 2019 (15.x) introduit un nouveau message d'erreur plus spécifique. nouveau message d'erreur plus spécifique (2628) pour ce scénario :
String or binary data would be truncated in table '%.*ls', column'%.*ls'. Truncated value: '%.*ls'.
Lorsqu'elle est définie sur ON sous le niveau 150 de compatibilité de la base de données, la troncature de troncature génèrent le nouveau message d'erreur 2628 afin de fournir plus de contexte et de simplifier le processus de dépannage.
Lorsqu'il est défini sur OFF sous le niveau de compatibilité 150 de la base de données, les erreurs de troncature augmentent le niveau précédent de la base de données. font apparaître le message d'erreur précédent 8152.
Pour le niveau de compatibilité de la base de données 140 ou inférieur, message d'erreur 2628 reste un message d'erreur opt-in qui nécessite l'activation de l'indicateur de suivi 460. activé, et cette configuration de la base de données n'a aucun effet.
0 votes
Pourriez-vous afficher un peu de code et des informations sur chaque table ?
0 votes
Les tableaux sont tous les deux assez grands - je ne vais donc poster que la partie des définitions de tableaux qui sont concernées et le code - est-ce acceptable ?
0 votes
Les définitions des tableaux et le code seraient parfaits.
3 votes
La dernière fois que j'ai eu ce problème, c'était avec le déclencheur, Le déclencheur insérait des données dans une table d'audit. Cela vaut la peine de vérifier le déclencheur aussi.