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 Server] Data truncated bizarre


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 42
    Points : 25
    Points
    25
    Par défaut [SQL Server] Data truncated bizarre
    Bonjour à tous!

    J'ai un problème étrange ce matin. Je tente de faire une simple requête d'UPDATE dans une de mes tables via une page ASPX mais l'erreur suivante survient :

    [Microsoft][ODBC Sql Server Drive][SQL Server]String or binary data would be truncated
    Le champ qui pose problème dans ma table est motifSuppression déclaré comme un varchar de 300. Or la chaîne que j'insère est loin de faire 300 caractères. Je ne vois pas du tout d'où peut provenir l'erreur d'autant plus qu'aucun trigger n'est associé à ce champ.

    J'ai essayé de passer le type de varchar à nvarchar mais rien n'a changé.
    Quelqu'un a-t-il déjà été confronté à ce problème incompréhensibe?

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Il y'a forcement un problème de disposition de tes champs de données dans la liste des champs de la table que vous souhaitez modifier.
    Quel est ton code asp qui gère l'insert ?

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    L'erreur ne vient pas d'ASP, j'ai fait un print screen de ma requete et je la lance en copier-coller dans SQL Entreprise Manager.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE t_Demande SET motifSuppression='La liste des comptes fournies est erronée ou n'a pas encore été validée par l''autorité compétente' WHERE numDemande=779
    Si je lance la même requête en supprimant des caractères, tout marche normalement. Et ça n'a rien à voir non plus avec le sapostrophes, j'ai testé aussi, on ne sait jamais.

    Mon champ "motifSuppression" est toujours en varchar(300) dans t_Demande. J'ai vérifié plus de 10 fois, et j'ai hésité avant de poster car je me doutais bien que personne ne me croirait. Mon serveur deviendrait-il fou?

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Poste s'il te plait ton scrit de création de cette table et nous allons nous en rendre compte.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    Désolé je ne peux pas, mon PC de développement est isolé du réseau, il faudrait que je le recopie entièrement. Néanmoins voici le bout qui est intéressant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE [dbo.t_Demande]
     
    ----
    [motifSuppression][nvarchar](300) collate SQL_LATIN1_general_CP1_CI AS NULL,
     
    ----
    )

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 839
    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 839
    Points : 52 932
    Points
    52 932
    Billets dans le blog
    5
    Par défaut
    SQL Server possède une limitation de la taille de la ligne de 8000 octets. Ceci afin de tenir dans une page de la base de données qui est l'unité de stockage de MS SQL Server. Cette limite est infranchissable pour des données non BLOB.
    Si lors d'une insertion ou d'un update la taille de la ligne dépasse ces 8000 octets, alors les données sont tronquées. Ce n'est donc pas telle ou telle colonne qui est visée, mais la ligne entière.
    Généralement cela arrive lorsque l'on a un modèle de données particulièrement pourri dans lequel on met tout et n'importe quoi dans une seule et même table sans avoir pensé à respecter les formes normales de la modélisation... Ce qui est généralement le cas des développeurs qui utilisent à outrance le VARCHAR sans en comprendre les mécanismes sous jacents !

    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/ * * * * *

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juin 2005
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    Si c'est pour se paer ma tête ce n'était vraiment pas la peine de répondre. Tu te prends pour qui? Si t'as des connaissances, ou tu en fais profiter les autres, ou tu ne dis rien mais tu ne critiques pas à demi mot.
    D'autre part, ce que tu écris est vrai mais ne me concerne pas car dans mon cas, si j'insère le contenu de ma textbox dans une autre colonne de la table qui est aussi au format varchar(300), tout marche très bien. D'où mon incompréhension.
    Enfin, je ne vois pas comment faire d'autre pour stocker des champs "remarques" qu'on m'impose. ALors le "most valuable SQL donneur de leçon" ferait bien de revoir sa copie...

    A bon entendeur...

Discussions similaires

  1. Lancement SQL Server Data Tools sous SQL server 2012
    Par sab.amine dans le forum Microsoft BI
    Réponses: 0
    Dernier message: 20/10/2013, 14h56
  2. Réponses: 7
    Dernier message: 05/09/2013, 13h26
  3. Sql Server Data tools
    Par assemism dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/07/2013, 14h16
  4. Sql Server Probleme Truncate / Pas Arrondi
    Par Nathan_2 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/05/2006, 19h09
  5. [SQL Server] Error converting data type varchar...
    Par Sir Tengu dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 13/06/2003, 10h46

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