Données tronquées dans SQL SERVER

Signaler
Messages postés
87
Date d'inscription
vendredi 22 décembre 2006
Statut
Membre
Dernière intervention
19 mai 2012
-
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
-
bonjour les amis,
je suis entrain actuellement d'écire une petite application qui attaque une base de données sql server 2005. j'ai créé ma base sql server et j'ai une table dans laquelle j'ai un champ de type text pour renseigner des commentaires.
le constat est que lorsque j'écris un commentaire d'à peine 1000 mots, j'ai une exception sqlException qui est générée avec ce message "Les données de chaîne ou binaires seront tronquées. L'instruction a été arrêtée.". je remarque donc que le type text de sql server ne peut supporter beaucoup de chaines de caractères.(valable pour les types Char(taille), varchar(taille), nvarchar(taille) etc...).
L'aide que je vous demande, c'est quel type sql server dois-je choisir pour envoyer une grande quantité de chaine caractères.En ce qui concerne visual studio le problème ne se pose pas car le type string assez grand pour contenir les données.
J'espère que j'ai bien été compréhensible.
merci à tous et bonne journée.

5 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Sous SQL Server, c'est toi qui définit la longueur des champs.
"1000 mots" n'est pas un terme très technique : il faudrait connaitre la longueur en caractères de ta chaine et la comparer à la définition du champ dans ta DB.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
PS : Le plus sage serait de stocker des phrases (numérotées) dans une table annexe et de faire référence à un groupe de phrases dans ta fiche principale.
Tout dépend ce que tu fais des données et si tu as besoin de faire des recherches dans ces chaines.
Messages postés
87
Date d'inscription
vendredi 22 décembre 2006
Statut
Membre
Dernière intervention
19 mai 2012

bj jack,
Autant pour les termes non appropriés. je voulais simplement dire 1000 caractères. mais le problème ne se situe pas là.En fait je veux pouvoir enregistrer tout un bloc de texte dans un champ de ma table et j'éprouve des difficultés. Comment m'y prendre pour y arriver? la solution que tu me proposes me parrait un peu compliqué car ne sachant pas par où commencer.STP aide moi à y arriver. merci
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
N'ayant jamais été confronté au remplissage de champs énormes, je ne sais pas où cela peut coincer.
C'est à toi de nous dire :
- la longueur exacte de ta chaine
- le type de champ
- la longueur déclarée ...

La solution que je propose aurait dû sortir lors de l'analyse de la structure de la DB.
Si tu as commencé à programmer, ça va être galère à modifier.
TablePrincipale.id (*)        TablePhrases.id_groupe (*)
               .champ1                    .id_phrase (*)(**)
               .champ2                    .phrase
               .id_groupe
 (*) clés primaires
(**) numéro auto
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
10
Bonjour,

Sous SQL Server tu peux utiliser l'un des 3 types suivants pour de grosses chaînes:

Char et VarChar (long. maxi 8000 caractères)
Text (lg maxi 231 - 1 caractères (2 147 483 647).

Si tes données sont en Unicode mets un n devant chacun de ces types, mais leur capacité est divisée par 2.


Calade