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 :

SQLServer + ASP.NET 2 Connexion ouvertes en permanences


Sujet :

ASP.NET

  1. #1
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut SQLServer + ASP.NET 2 Connexion ouvertes en permanences
    Salut à tous

    J'ai un gros problème sur une appli en ASP.NET 2

    J'ai des connexions qui restent ouvertes sur mon serveur SQL Server 2005
    Ce qui est gênant c'est qu'après 3 minutes de navigations sur le site, j'ai plus de connexion autorisée par le serveur SQL (nommé "berlin" (séparé du serveur web lui même nommé "Kyoto"))

    Je regarde dans le moniteur d'activité de berlin, je voit une 50aine de connexions encores ouvertes en provenance de kyoto, c'est de là que j'en ai conclu que mes connexions ne se fermaient pas

    Voilà le code asp.net exécuté
    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
    17
    18
    19
    SqlConnection ACSDB = con.ouvrirBDD();
     
    string SQL = "SELECT PAYS_ID\n" +
                 "FROM REF_LANGUE_PAYS\n" +
                 "WHERE LANGUE_ID = " + langue.ToString() + "\n";
     
    SqlCommand SQL_Commande = new SqlCommand(SQL, ACSDB);
    SqlDataReader SQL_Resultat = SQL_Commande.ExecuteReader();
     
    string drapeau = "FR";
     
    if (SQL_Resultat.Read())
        drapeau = (string)SQL_Resultat["PAYS_ID"];
     
    SQL_Resultat.Close();
     
    img_drapeau.Src = "../../../Portail/Images/drapeaux/mini" + drapeau + ".jpg";
     
    con.fermerBDD();
    en sachant que l'objet "con" est une instance de la classe connexionBDD, dont la fonction membre ouvrirBDD crée un objet SqlConnection sur ma base de données, l'ouvre et le renvoit ouvert, et où PortailMnodeBDD() n'est ni plus ni moins qu'un string contenant le nom d'une base de données (j'espère avoir été clair sur cette dernière partie ^^)

    Je désespère, parce que hier, tout allais bien (à part une dixaine de datareaders que j'avais oublié de fermer et du coup le problème était le même mais je savait pourquoi ^^) et depuis environ 1h c'est la cata sans raison apparente

    J'ai controlé les requettes exécutées "blocantes" sur berlin (par le moniteur d'activité) et aucune ne provient d'un data reader que j'aurai oublié de fermer. De plus, j'ai pris pour habitude de mettre "con.fermerBDD()" dans mon Page_Unload() (je sais c'est pas super propre comme méthode, mais au moins j'oublie plus de la fermer (ma connexion hein, pas autre chose ^^))

    Je découvre asp.net (enfin depuis 2 mois maintenant, mais je suis pas encore calé) et les joies du c# (avant je travaillais en ASP VB caca pas bien car trop permissif et ne plante pas quand la logique voudrait que si)

    Enfin bref... si quelqu'un a une idée, je suis preneur

  2. #2
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut
    J'ai trouvé :S

    Ma fonction membre fermerBDD() ne fermait pas la base de données, car elle ne fermait la base de données que si elle avait été ouverte (pour éviter une exception qui se produit quand on tente de faire un close sur un System.Data.SqlClient.SqlConnection alors qu'il n'a jamais été ouvert

    Pour celà j'utilise un booléen isOpened qui vérifie si la base de données est ouverte...

    Sauf que... quand j'ouvrais ma base de données... ben j'oubliais de passer le booléen à true, donc mon fermerBDD était persuadé que je n'avais pas ouvert ma base de données, alors qu'en réalité elle était ouverte. Donc forcément je me retrouvais avec une connexion ouverte en permanence... Vous suivez ?
    Non ? Bon en tout cas j'ai trouvé mon erreur, et maintenant j'en ai une autre donc je vous laisse

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/08/2010, 14h19
  2. Hébergement Serveurs Privés SqlServer + ASP net
    Par p_mehdi dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 23/04/2009, 08h06
  3. [C#/ASP] Pourquoi ma connexion ASP-SqlServer est impossible ?
    Par pataphysicien dans le forum Accès aux données
    Réponses: 3
    Dernier message: 12/07/2006, 18h10
  4. Erreur connexion asp.net oracle
    Par WELCOMSMAIL dans le forum Connexions aux bases de données
    Réponses: 9
    Dernier message: 05/04/2006, 09h07
  5. [VB.NET] [SQL SERVER] connexions ouvertes
    Par lucie.houel dans le forum ASP.NET
    Réponses: 22
    Dernier message: 20/03/2006, 08h44

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