Capacités des champs dans la base SQL Server
j'ai une base de données SQL Server, lorsque je créé une table avec des champs de type char, la base me précise que la taille des champs ne peut exéder 8000 caractéres...
Mais lorsque je remplis ma table, les champs ont une capacités de tout au plus 2000 caractères...
Comment cela se fait-il???
Merci d'avance...
23 réponses
Le problème porte sur la taille pratique des champs CHAR dans SQL Server et le fait que l'insertion peut échouer lorsque la longueur totale d'une ligne dépasse un plafond technique. Lors de la création, un avertissement peut indiquer que la taille maximale d'une ligne dépasse 8060 octets, ce qui peut provoquer l'échec d'INSERT ou d'UPDATE lorsque le contenu est trop long. Pour stocker de grandes quantités, il est souvent préférable d'utiliser des champs TEXT ou IMAGE, qui peuvent contenir jusqu'à 2 Go. D'autres précisent que, en pratique, les insertions réussissent tant que la longueur de la ligne ne franchit pas le seuil, mais qu'un dépassement peut varier selon les colonnes concernées.
-
Monsieur/Madame
Dans START - PROGRAMS, j'arrive a Microsoft SQL Server 2005, mail il n'y a que Configuration Tools seuleument. Je voulais au fait acceder a SQL Configuration Manager pour enfin arriver a SQL Server 2005 Network Configuration.
Depuis SQL Server 2005 je n'arrive donc pas a trouver le SQL CONFIGURATION MANAGER.
Pourriez vous m'aider - Je travaille dans Windows XP.
Merci d'avance -
ModérateurArgleu !
les variable $objectifs et autres proviennent d'un formulaire ?
Si c'est le cas, alors ton serveur possède une faille de sécurité (SQL-Injection).
Démonstration:
Dans ton formulaire, je tape dans le champ $objectifs:','','',''); DELETE projet ; SELECT ('
Et ton code va exécuter la requête suivante:
INSERT INTO projet VALUES('6', 'blabla', 'blabla', '','','',''); DELETE projet ; SELECT ('', 'blabla', 'blabla', 'blabla')
Et voilà !
Simplement en tapant un peu de texte dans un de tes formulaires, j'ai vidé une de tes tables SQL !
L'erreur de syntaxe qu'il te rapport vient sûrement du fait que tu as tapé une apostrophe (') dans un de tes champs.
Pour se protéger contre ce genre d'attaque, il est impératif de doubler les apostrophes dans tous les champs
("l'autre" devient "l''autre") -
Salut, t'avais raison...
Par contre si dans mon insertion mes champs contiennent des ' j'ai le message d'erreur suivant :Warning: mssql_query(): message: Ligne 1 : syntaxe incorrecte vers 'est'. (severity 15) in //risv01\intranet rives\intranet rives\majprojets.php on line 26 Warning: mssql_query(): message: Ouvrez les guillemets avant la chaŒne de caractŠres ')'. (severity 15) in //risv01\intranet rives\intranet rives\majprojets.php on line 26 Warning: mssql_query(): Query failed in //risv01\intranet rives\intranet rives\majprojets.php on line 26
Voila ma requête:mssql_query("INSERT INTO projet VALUES('6', '$libelle', '$type', '$objectifs', '$problematique', '$planningsuivi', '$resultat')");
Voili voilou...
Bon weekend -
ModérateurIl faut juste que tu fasse attention au jeu de caractères utilisé.
Soit tu utilise & agrave; et autres entités HTML pour être sûr que c'est bon, soit tu utilise directement le caractère retourné par la base de données dans la page HTML, mais en précisent le jeu de caractères (ce n'est peut-être pas iso-8859-1, c'est peut-être un autre). -
Salut , merci d'avoir répondu...
J'ai essayé ce que tu m'as dis mais ça ne change rien...
Certaines personnes m'ont conseillé d'écrire les accents en html.
Exemple :
è >>> è
Et après en effet lors de l'affichage ça marche...
Une autre idée? -
Modérateurtexte original : Essai matière
texte à l'affichage : Essai matiŠre
Un autre mystère????
Là c'est un problème avec le navigateur.
Quel jeu de caractères utilises-tu quand tu envoie les pages HTML ?
ascii seul, ISO-8859-1, UTF-8 ?
Si le caractère s'affiche mal, c'est que le navigateur n'a pas été capable de sélectionner le bon jeu de caractères.
Il faut l'aider en indiquant le jeu de caractères dans la page.
(Regarde par exemple dans les pages de CCM:<META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1">
-
Je suis passé par Query Analyser et ça a marché, mes champs sont entièrement remplis...
Par contre, par la suite, je fais un affichage par l'intermédiaire de PHP et tout les caractères qui ont des accents ne ressortent pas correctement!!!!
Exemple :
texte original : Essai matière
texte à l'affichage : Essai matiŠre
Un autre mystère???? -
Je travaille en PHP mais j'ai query analyser d'installé sur mon poste aussi...
-
Modérateurok... donc c'est normal:
Enterprise Manager coupe les champs au copier-coller.
Si un champ contient 3728 caractères, il ne te donnera que les 1023 premiers.
Ce n'est pas SQL Server qui pose problème, c'est Enterprise Manager.
Il faut prendre un autre moyen d'interroger la base SQL.
(un programme que tu créé toi-même, Excel ou encore le Query Analyzer)
Tu as appris à "programmer" en SQL ? -
Je l'interroge avec Enterprise Manager...
-
ModérateurAvec quoi tu interroge le serveur SQL ?
Enterprise Manager ?
Query Analyzer ?
Un programme en C#, en C++, en Java ?
A partir d'Excel ?
autre ? -
Corrige le programme qui va interroger la base SQL.
Tu peux être un peu plus précis?
Car la en fait je suis en stage et c'est la première fois que je vois une base SQL server donc c'est un peu un ovni pour moi... Lol
Merci! -
ModérateurC'est pas le merdier du tout
Enfin pas trop
ça marche très bien, SQL Server.
(quand on ne dépasse pas les 8 ko par enregistrement ;-)
Ton problème de taille de champs, ce n'est pas un problème SQL server, c'est un problème avec ton client SQL qui tronque les champs.
Corrige le programme qui va interroger la base SQL.
Je manipule régulièrement des champs qui font plus de 3000 caractères sans problème. -
Ben je comprends pas que se soit autant le merdier avec SQL Server alors qu'avec Mysql tout marche très bien...
Ca me fout le démon de me prendre la tête pour une simple taille de champs... -
ModérateurQu'est-ce que tu ne comprend pas ?
-
J'y comprends rien, je viens d'essayer ce que tu m'as dis mais...
-
ModérateurPour le nombre de caractères je chope le contenu du champs, je le colle dans Word et après outils/stat
Si tu fais un copier-coller d'un champ à partir du Query Analyzer ou de l'Enterprise Manager, c'est normal qu'il soit coupé puisque ces logiciels n'affichent pas la totalité du contenu des champs.
Dans le Query Analyze:
Menu Tools > Options > onglet Results > "Maximum characters per column" > change la valeur.
Accesoirement, évite le copier-coller: ce n'est pas fiable.
Utilise un vrai client SQL (par exemple, une connexion ODBC sur ta base à partir de Excel). -
Salut, heureusement que t'es la...
J'ai la vesrion 7.0. Pour le nombre de caractères je chope le contenu du champs, je le colle dans Word et après outils/stat
Voila...
Et au niveau des champs image, la base me réponds que je peux pas insérer de texte dedans ce qui me parait assez logique... -
Modérateurquoi que je fasse (type et longueur), je ne peux pas mettre plus de 1023 caractères par champs..
Il y a un problème alors.
Quelle version de SQL Server utilises-tu ?
Quand tu dis que tu n'arrive pas à dépasser 1023 caractères, quel message d'erreur s'affiche quand tu fais ton INSERT ?
(Ou alors tu as vu ces 1024 dans le Query Analyzer ?) -
Salut,
quoi que je fasse (type et longueur), je ne peux pas mettre plus de 1023 caractères par champs...
Je ne comprend pas, j'ai essayé sous Mysql et aucun problème, je met la taille que je veux et mes champs se remplissent très bien...
Je ne comprends pas....
- 1
- 2