Données tronquées dans SQL SERVER

cs_bonagad Messages postés 87 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 19 mai 2012 - 11 juin 2010 à 10:20
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 - 14 juin 2010 à 10:30
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 juin 2010 à 11:25
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)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 juin 2010 à 11:28
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.
0
cs_bonagad Messages postés 87 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 19 mai 2012
11 juin 2010 à 11:52
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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 juin 2010 à 15:33
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
14 juin 2010 à 10:30
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
0
Rejoignez-nous