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

MS SQL Server Discussion :

[SQL] Problème de requête SQL de plus de 8060 caractères ?


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 194
    Par défaut [SQL] Problème de requête SQL de plus de 8060 caractères ?
    Bonjour à tous,

    Savez-vous comment contourner ce message d'erreur.
    Cannot create a row of size 11407 which is greater than the allowable maximum of 8060. The statement has been terminated.
    Ma chaîne SQL dépasse 8060 caractères.
    J'ai essayé de passer mes valeurs en paramètre mais celà n'a rien changé.

    Help me please

  2. #2
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    ta requete doit etre enorme !

    faut la décomposer en plusieurs, pass par des tables tempo ou autre chose....

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 194
    Par défaut
    Il n'y as vraiment pas d'autre moyen ??

  4. #4
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    moi j'en connai pas, dans ce cas là moi je ferai une prod stockée, attends pour voir si qqun d'autre apport une autre solution

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 194
    Par défaut
    Avec une procédure stockée ma requête qui fera l'appel de la procédure fera tout de même plus de 8060 caractères non :

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    et en passant par des vues ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 194
    Par défaut
    C'est une requête d'update.

  8. #8
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    faut la faire en plusieurs fois, fait plusieurs update les uns à la suite des autres, ce sera transparent pour l'utilisateur, la porcedure stockée par contre améliore la rapidité d'execution du code, comme ta requete à l'air d'etre assez lourde, ce sera mieux je pense.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 194
    Par défaut
    Oui je pourrai faire plusieurs requêtes à la suite, mais là, vu le nombre de champs concernés je devrai découper ma requête en au moins 10 fois.

    Mon application va être utilisé par plus de 1000 personnes, çà me semble un peu risqué pour les montées en charge.

    Il doit bien y avoir une solution ... mais j'ai beau cherché, elle est bien planquée...

  10. #10
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    mais comment ça se fait ? Il y a combien de colonnes ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 194
    Par défaut
    Il y a environ 50 colonnes dont 15 sont en nvarchar(4000).

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 194
    Par défaut
    J'ai pu lire sur un site que la taille des lignes pour SQL Server est limitée à 8060 octets. Ce qui signifie que ce serait l'enregistrement en base qui ne peut dépasser 8060 octets et non pas ma requête SQL d'update.

    Est-ce que quelqu'un peu me donner confirmation ?

    Merci !

  13. #13
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 228
    Billets dans le blog
    25
    Par défaut
    heureusement qu'orafrance a mis un peu d'ordre là-dedans!

    La problématique vient bien de la taille de l'enreegistrement et pas de la taille de la requête.

    Sous MS-SQL, un tuple ne peut pas être plus grand que 8040 octets car il doit tenir sur une page de données de 8K. Rien ne vous empêche de créer une kyrielle de varchar(8000), mais c'est lors de l'insert que le check sera fait.

    pour palier à cette limitation, il faut soit découper votre tables en plusieurs tables (partitionnement horizontal), soit passer par des champs de type TEXT (dès lors ce n'est que le pointeur sur une page qui est stocké dans la table, avec les limitations qu'un champ texte crée.)
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 194
    Par défaut
    Ok, merci beaucoup pour ces infos. Je vais tester de suite.

    Bonne journée !

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

Discussions similaires

  1. [SQL] Problème de requête sql utilisant LIKE
    Par yakup.67 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/06/2007, 13h31
  2. [SQL] problème avec requête sql
    Par belakhdarbts10 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/05/2007, 11h58
  3. [SQL] problème de requête sql d'insertion
    Par belakhdarbts10 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 10/05/2007, 14h11
  4. [SQL] Problème de requête SQL
    Par nico26 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/01/2007, 16h40
  5. [SQL] Problème de requête SQL
    Par Invité dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/09/2006, 15h18

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