Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Comprendre le message "Les données de chaîne ou binaires seront tronquées."

0000003146     -      29/03/2023

Lors d'opérations sur la base de données, SQL Serveur peut renvoyer le message :
"Les données de chaîne ou binaires seront tronquées."
("String or binary data would be truncated.")

Ceci vient du fait que l'utilisateur essaie de sauver une chaîne de caractères avec un certain nombre de caractères et que le nombre de caractères est plus important que le nombre de caractères disponibles.
ex : tenter de sauver "1234567890" dans le code postal d'une fiche client qui n'accepte que 9 caractères.

La manipulation ci-dessous permet d’avoir un message plus verbeux.

Sur le serveur SQL, il faut exécuter cette commande : 

DBCC TRACEON(460,-1)

Cela permettra alors d’avoir un message du type : 
"Les données de chaîne ou binaires seraient tronquées dans la table 'MERCATORDEMOERP.dbo.CLI', colonne 'C_CODEP'. Valeur tronquée : '123456789'."
("String or binary data would be truncated in table 'MERCATORDEMOERP.dbo.CLI', column 'C_CODEP'. Truncated value: '123456789'.")

Pour désactiver cette possibilité, il faut exécuter ceci :

DBCC TRACEOFF(460,-1)

La « trace » se désactive automatiquement au redémarrage du serveur SQL.

Attention, ceci n’est disponible que pour certaines versions de SQL Serveur.

Extrait de https://learn.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql?view=sql-server-ver16 :
Replaces data truncation message ID 8152 with message ID 2628. For more information, see KB4468101.
Starting with SQL Server 2019 (15.x), to accomplish this at the database level, see the VERBOSE_TRUNCATION_WARNINGS option in ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL).
Note: This trace flag applies to SQL Server 2016 (13.x) Service Pack 2 CU 6, SQL Server 2017 (14.x) CU 12, and later.
Note: Starting with database compatibility level 150, message ID 2628 is the default and this trace flag has no effect.
Scope: Global or session.