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?
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 ....
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.
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.
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()