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

Accès aux données Discussion :

[ADO.NET] Connexion non fermée malgré un close() ?


Sujet :

Accès aux données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 56
    Points : 21
    Points
    21
    Par défaut [ADO.NET] Connexion non fermée malgré un close() ?
    Bonjour tout le monde,


    Dans le cadre d'une mission, j'optimise des accès à une base Sql Server, à partir d'une application web développée en VB.NET.

    Il s'avère que jusqu'à présent, les connexions à la base était mal fermée.
    L'architecture est la suivante : l'application développée en vb.net utilise une API (fichier dll) développée elle aussi en vb.net. C'est dans cette api que sont regroupées toutes les méthodes d'accès à la base et de connexion.

    L'utilisation se fait ainsi dans l'application

    dim api as new API
    api.connexion() ==> Qui fait un open() sur l'instance
    response.write(api.getIdByLibelle("le_libelle"))
    api.deconnexion() ==> qui fait un close() de l'instance



    Mais voilà, y a un léger soucis. A l'aide de la commande sp_who2 dispo pour sql server, je scrute l'ouverture de nouveaux processus et leur fermeture. Or, il s'avère que parfois, malgré ma déconnexion(), le processus reste affiché, comme si la connexion était encore ouverte.

    Et là, je ne comprends pas pourquoi... Y a-t-il une autre opération à faire que le "close()" pour fermer le processus ? Parce que mon but est de fermer tout de suite les connexions ouvertes car la montée en charge de l'appli risque d'être importante et le serveur vite dépassé si mes connexions ne se ferment pas.


    Quelqu'un peut-il m'aider ?


    PS : Je rajouterai un truc. Les connexions semblent toujours ouverte dans sql server (avec sp_who2), mais dès que je regénère mon appli web en local, les connexions disparaissent du serveur de base de données... Pourquoi ???

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Je ne sais pas si ça en ait la cause, mais tu trouveras quelques infos ici : http://msdn2.microsoft.com/fr-fr/lib...ca(vs.80).aspx
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 56
    Points : 21
    Points
    21
    Par défaut
    Bon, j'ai bien tout lu. Effectivement, je n'avais pas cette notion de "pool".

    Cependant, je pense qu'elle ne répond pas à mon problème. Ils expliquent qu'un même pool est utilisé pour des connexions dont la chaine de connexion est rigoureusement la même. Or, dans mon cas, c'est le cas. Et au chargement de ma première page, bien qu'un seul objet API soit instancié, connecté, utilisé puis déconnecté, je me retrouve avec 3 nouveaux process sur le server SQL qui sont en "sleeping"...

    Moi pas comprendre pourquoi.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 56
    Points : 21
    Points
    21
    Par défaut
    Bon, je me réponds car j'ai résolu mon problème.

    C'était effectivement les pools qui me prenaient des places en process côté serveur SQL.

    Afin d'obtenir l'effet escompté, j'ai rajouté dans ma string de connection, le couple "pooling=no" qui désactive les pools. Du coup, l'ouverture d'une connexion crée un pool pour elle seule, et la fermeture de celle-ci le supprime.

  5. #5
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Merci du suivi.
    La prochaine fois n'oublie pas le tag résolu
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  6. #6
    Membre à l'essai
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    je pense que ne pas utiliser le pool , ne va pas résoudre tes probleme de performace , il auras juste l'effet de les déplacer vers un autre point
    c'est mon avis

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 56
    Points : 21
    Points
    21
    Par défaut
    Faux.
    Les performances sont bien meilleures depuis. Et tout fonctionne parfaitement.

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

Discussions similaires

  1. [ADO.Net] Connexion à SQL SERVER 2005
    Par dumser1 dans le forum Accès aux données
    Réponses: 9
    Dernier message: 17/01/2009, 17h37
  2. Voir les connexions non fermées
    Par yohann26 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 19/03/2008, 14h52
  3. [C# 2.0][ADO.Net]Connexion à Oracle
    Par MoscoBlade dans le forum Accès aux données
    Réponses: 6
    Dernier message: 18/10/2007, 14h54
  4. [VB.NET 2005]Composants non 'resetés' après un close
    Par NicolasJolet dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/03/2006, 11h23
  5. [ADO.Net][C#]Pourquoi connexion fermée est active>SQLServ
    Par superbobo dans le forum Accès aux données
    Réponses: 3
    Dernier message: 25/01/2006, 17h57

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