web-dev-qa-db-fra.com

Une chaîne ou des données binaires seraient tronquées Erreur SQL

J'ai une procédure stockée SQL qui accepte un paramètre de type VARCHAR (MAX). Autant que je sache et d'après ce que j'ai lu, la taille maximale de ces chaînes est de 2 Go: MSDN

Pour une raison quelconque, lorsque je passe une chaîne supérieure à 8 Ko, je reçois:

Chaîne ou des données binaires seront tronquées.

Pourquoi ai-je ce message d'erreur et comment puis-je le résoudre?

9
Lior Ohana

Selon BoL (le lien que vous avez spécifié), il existe une différence d’interprétation. Le montant maximum que vous pouvez utiliser dans une requête (partie n) est de 8000. À des fins de stockage, varchar (max) peut traiter 2 Go disque. 

Il s’agit simplement d’une interprétation de types de données à des fins d’interrogation et de stockage. En fin de compte, vous ne pouvez utiliser que 8 000 caractères dans une requête ....

8
Mark Kremers

pour éviter ce problème, vous devez commencer par convertir votre chaîne en varchar(max):

column = cast(other_column as varchar(max))

ainsi, toute chaîne plus longue que max (8000 ou 4000, selon la version) sera tronquée à la longueur maximale.

8
knittl

Vous passez une chaîne plus grande que la colonne dans la base de données, non? Essayez d’augmenter la taille de votre colonne.

1
Junior M

Vous passez une chaîne plus grande que la colonne base de données.

Comme votre table de base de données est la suivante:

 EXECUTIVE  varchar(15) 

Mais votre chaîne d'insertion ressemble à (dans vb.net ):

cmd.Parameters.Add("@EXECUTIVE", Data.SqlDbType.VarChar, 150).Value = CmbExecutive.Text.ToString()
1
Feroj Ahmed