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

ASP.NET Discussion :

Erreur incompréhensible sur schémas et résultats renvoyés par des requêtes SQL


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut Erreur incompréhensible sur schémas et résultats renvoyés par des requêtes SQL
    Bonjour à tous,


    Je rencontre depuis quelques jours déjà sans avoir aucune idée de l'origine du problème une erreur qui pourra vous paraître commune:

    Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
    Merci de ne pas me répondre qu'il y a une incohérence dans les résultats type:
    - Une colonne non null qui est renvoyée à null
    - Une clé primaire absente ou en double
    - Un clé étrangère incohérente
    - etc.

    Là où l'erreur est incompréhensible:
    - Elle se produit au bout d'un certain temps d'utilisation de l'application ASP.NET sans que je puisse identifier l'origine de ce qui déclenche cette erreur
    - Elle se produit sur TOUTES les requêtes SQL effectuées par l'application et ce quelque soit l'utilisateur, le navigateur et le poste tentant d'accéder à l'application
    - Même lorsqu'elle survient, si un autre répertoire virtuel : ayant les mêmes droits, les mêmes accès, pointant sur les mêmes fichiers et ayant une adresse web similaire et des paramètres similaire existe. Alors celui-ci continue de fonctionner sans qu'aucune erreur du même genre ne soit remontée.

    À l'heure actuelle la seule "alternative" que j'ai trouvé pour résoudre le problème se résume à forcer une recompilation du site (ne serait-ce qu'en modifiant le fichier Web.config).

    Si quelqu'un avait la moindre idée... ? Je ne sais plus quoi faire..
    Merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Bonjour,

    Peux-tu nous fournir plus de détail tel que le nom exact de l'erreur ?
    Tu ne sais pas pourquoi elle survient mais sais-tu où histoire d'avoir quelques lignes de code ?

    Se produit-elle au remplissage (enfin plus largement manipulation) d'un DataSet sur lequel tu as défini des contraintes ? Dans ce cas tu as la possibilité de dire de ne pas utiliser les contraintes.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    Effectivement, je n'ai pas fourni de code. Mais je ne l'ai pas fait car cela se produit sur chacune des requêtes effectuée par l'application.

    N'importe quel DataSet avec un simple Select, n'importe quelle SqlCommand également..

    Exemple:
    Un select de type
    SELECT * FROM MATABLE WHERE MONID=@ID*
    Utilisant un DataSet où le Schéma n'est défini que par la Table "MATABLE"
    où @ID est : Convert.ToInt32(Request.QueryString["ID"])

    Une fois que l'application a commencé a générer les fameuses erreurs, cette requête lèvera également l'exception
    Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
    Même si je le test par moi-même dans une page où je donne bien entendu un querystring "ID" avec une valeur correcte.

    Là où c'est assez bizarre, c'est que que si j'effectue cette requête sur
    http://mondomaine.com/monapplication1/mapage.aspx?ID=3 par exemple et que c'est ici que ça plante
    puis sur
    http://mondomaine.com/monapplication2/mapage.aspx?ID=3 : ça ne plantera pas.

    Pourtant aucun doute sur le fait que la requête exécutée est identique. (Mêmes fichiers, même base de données, les 2 répertoires virtuels pointent exactement au même endroit) .

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Quel base de données utilisez vous ?

    Avez vous mis des traces dans votre application ? si oui, que disent-elles ?

    Dans le cas contraire, comment gérez vous vos connexions à la base ?

    Sur le profiler , les requêtes arrivent-elles sur le SGBD ? Quid de l'état des connexions ?

    (en absence de code, on est obligé de partir de questions basiques).

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 7
    Par défaut
    Merci de votre réponse,

    Je ne demande effectivement pas mieux que l'on commence même par les questions basiques en espérant que justement j'ai probablement oublié quelque chose de basique..

    J'utilise SQL Server 2005, je n'ai pas de Profiler sur la base de données et les Logs d'exceptions sont toujours toujours de même ressort:
    - Une erreur de contrainte sur une extraction via DataSet
    - Une erreur type "la COLONNE Y n'existe pas" (ce qui est impossible, au pire 0 ligne, mais impossible que dans une commande type SELECT MON_ID FROM MYTABLE WHERE ID=@ID le résultat ne renvoie pas la colonne MON_ID)

    J'aimerais vous fournir du code un peu plus concret mais l'application représente des dizaines de milliers de lignes.
    L'erreur peut arriver à n'importe quel endroit où une requête sql est exécutée.

    En ce qui concerne l'état des connexions, qu'entendez vous par là ?
    J'avoue que lorsque je fais une requête j'exécute quelquechose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataSet1.MYTABLE DataTable = new DataSet1TableAdapters.MYTABLETableAdapter.GetDataByID(10);
    Sachant que le DataSet via l'interface de Visual studio 2005 en choisissant simplement une ConnectionStrings disponibles via le Web.config qui est telle que suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <add name="BD_PNDV_connectionString" connectionString="Data Source=NTDD2159;Initial Catalog=BD_MABASE;Persist Security Info=True;User ID=CONNECT_MA_BASE;Password=monpassword" providerName="System.Data.SqlClient" />

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par n1cky Voir le message
    Merci de votre réponse,

    Je ne demande effectivement pas mieux que l'on commence même par les questions basiques en espérant que justement j'ai probablement oublié quelque chose de basique..

    J'utilise SQL Server 2005, je n'ai pas de Profiler sur la base de données
    Si,si : le profiler est standard. DataBase Tools -> Sql Server Profiler

    et les Logs d'exceptions sont toujours toujours de même ressort:
    - Une erreur de contrainte sur une extraction via DataSet
    - Une erreur type "la COLONNE Y n'existe pas" (ce qui est impossible, au pire 0 ligne, mais impossible que dans une commande type SELECT MON_ID FROM MYTABLE WHERE ID=@ID le résultat ne renvoie pas la colonne MON_ID)
    Je ne parlais pas des logs d'exception. Avez vous des traces applicatives que vous pouvez activer ?

    En ce qui concerne l'état des connexions, qu'entendez vous par là ?
    J'avoue que lorsque je fais une requête j'exécute quelquechose du genre
    Profiler et utiliser ls proc stoc système de Sql Server pour voir si les connexions s'ouvrent et se ferment correctement.


    <add name="BD_PNDV_connectionString" connectionString="Data Source=NTDD2159;Initial Catalog=BD_MABASE;Persist Security Info=True;User ID=CONNECT_MA_BASE;Password=monpassword" providerName="System.Data.SqlClient" />
    Ca ne me dit pas comment vous gérez les connexions :
    de manière normale (en gros on instancie et on ouvre la connexion quand on charge chaque page, on ferme le plus tôt possible dès que les évenement sont traités) ou de manière plus "baroque" ?

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/05/2010, 23h55
  2. Résultat renvoyé par Ajax
    Par PsychedeChed dans le forum jQuery
    Réponses: 6
    Dernier message: 13/04/2009, 22h20
  3. Réponses: 1
    Dernier message: 28/02/2009, 11h04
  4. Réponses: 2
    Dernier message: 11/04/2008, 23h23
  5. [JRE] Erreur incompréhensible sur solaris
    Par Yoops dans le forum Langage
    Réponses: 1
    Dernier message: 31/05/2006, 14h39

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