IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

PB de MISE A JOUR


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de Stephane_br
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 83
    Points
    83
    Par défaut PB de MISE A JOUR
    Bonjour.

    Je travaille en ASP et j'ai monté une page qui met à jour une base SQL.
    J'ai exactement la même page pour l'insertion (même formulaire, mêmes champs et même table), et ça fonctionne très bien. Or pour la modification, voilà ce que j'ai comme erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Impossible de créer une ligne de dimension 8085 supérieure au maximum autorisé 8060.
    La syntaxe pour la mise à jour fonctionne bien, j'ai tester sans le champs qui pose pb et ça passe sans pb. Alors dans ma base de données, le champ qui pose pb, et un champs de type nvarchar et de taille 2500. A l'insertion, je peux mettre autant de caractère que autorisé. Et par contre, à la mise à jour, si je dépasse 211 caractères, ça veut plus mettre à jour. En dessous, oui.
    J'ai bien les autorisations necessaires dans SQL.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [b]entête de page :[/b]
     
    ...
     
      strTablesValues3 = "TITRE_SEJOUR_E='" & strCommune_E & "', des_minitel_E='" & strDesMinitel_E & "', "
      strTablesValues3 = strTablesValues3 & " PROGRAMME_E='" & strProgramme_E & "', HEBERGEMENT_E='" & strHebergement_E & "', "
      strTablesValues3 = strTablesValues3 & " PRIX_SEJOUR_E='" & strPRIX_E & "', PRIX_SEJOUR_DES_E='" & strPrixDes_E & "'" 
     
     
      Set MM_Cmd3 = Server.CreateObject("ADODB.Command")
      MM_Cmd3.ActiveConnection = MM_sql2005_STRING
      MM_Cmd3.CommandText = "UPDATE GITES2005RUBRIQUES SET " & strTablesValues3 & " WHERE numero_gite = '" & strNumGite & "'"
      'response.write MM_Cmd.CommandText
      MM_Cmd3.Execute
     
    ...
    Dans SQL, mon champ :
    NOM : des_minitel_E
    Type de données : nvarchar
    Longueur : 2500
    Null autorisé : Oui

    Autorisations d'accès complètes

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Vous utilisez SQL Server version 2000 je suppose.

    Or il est strictement impossible de stocker des lignes de données dont la volumétrie dépasse 8060 octets. Pour une bonne et simple raison, c'est que MS SQL Server utiliser des pages de 8 K pour stocker les données et qu'une ligne doit rentrer dans ces 8 Ko. Mais sur ces 8 Ko, quelques octets sont réservés à usage interne. D'ou la limite absolue de 8060 octets.
    la limite n'est pas sur une colonne, mais bien sur la ligne.

    Pour des raisons de performances, dépasser cette limite ou encore avoir des tables dont la longeur de la ligne est de plusieurs milliers d'octets est particulièrement mauvais en terme de performances. Un modèle de donnée se doit d'être normalisé et je pense que vous avez créé des tables fourre-tout au lieu de découper soigneusement votre modèle et de la normaliser au moins en 3 FN.

    La seule soluition viable consiste à revoir votre modèle de données.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre régulier Avatar de Stephane_br
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 83
    Points
    83
    Par défaut
    Ce que je ne comprend pas, c'est pourquoi ça marche en mode INSERT et pas en mode UPDATE ??
    J'ai besoin de cette place dans ce champs. Il s'agit d'une description et elle peut être parfois assez longue. J'ai modifié mon type de données en ntext et c'est bon.

    Mais j'aurrais bien aimé comprendre Donc en fait, c'est bien le type qui n'était pas adapté à ce que je voulais faire ?
    :

    Merci en tout cas pour votre réponse.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Cela ne marche ni en insert ni en update. Relisez ce que j'ai dit : la limite de stockage est de 8060 octets et cela ne peut être dépassé quelque soit la façon de faire ! en revanche en type TEXt vous pouvez faire ce que vous voulez, mais pour manipuler des données de plus de 8060 octets il va falloir utiliser les fonction WITETEXT et READTEXT, car là encore la limite dans une requête INSERT ou UPDATE est TOUJOURS la même.

    Le mieux pour comprendre est de suivre une formation. MS propose au minimum 10 jours de formation pour maitriser MS SQL Server...
    Avez-vous suivi une formation ?
    Pour ma part je délivre des formations plus courtes et à la carte sur MS SQL Server afin d'aller à l'essentiel rapidement.

    Voir mon site d'entreprise DATA SAPIENS : www.datasapiens.com
    Sachez que je suis l'auteur du site http://slpro.developpez.com et "Most Valuable Professional" sur MS SQL Server.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre régulier Avatar de Stephane_br
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 83
    Points
    83
    Par défaut
    Merci.
    Non, je me débrouille en autoididacte là dessus. Et pour le moment, je n'envisage pas de formation.

    Mais merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mises à jour des paquetages en mode console
    Par Memnoch31 dans le forum Debian
    Réponses: 6
    Dernier message: 16/05/2004, 16h30
  2. problème de mise a jour
    Par leeloo076 dans le forum ASP
    Réponses: 3
    Dernier message: 15/04/2004, 16h09
  3. Mise a jour mandrake linux 9.2
    Par Otacan dans le forum Mandriva / Mageia
    Réponses: 2
    Dernier message: 02/04/2004, 22h47
  4. [] [Install] Problème de mise à jour des dll
    Par pepper dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 23/01/2003, 22h34
  5. Visualisation des mise à jour en réseau
    Par fandor7 dans le forum Paradox
    Réponses: 2
    Dernier message: 06/12/2002, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo