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 :

Fermer les connections sur le serveur


Sujet :

Accès aux données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 31
    Points
    31
    Par défaut Fermer les connections sur le serveur
    Bonjour,

    J'utilise C# avec SQL serveur 2005 sous VS 2003. A un moment dans mon programme je me connecte à une base de donnée sur le serveur, j'exécute une procédure stockée puis ensuite je dois détacher la base.

    Mon problème est que lors de l'exécution de ma requête j'ouvre des connections sur le serveur que je n'arrive pas à fermer, ensuite, ce qui m'empêche de détacher ma base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SqlConnection sqlConnection = new SqlConnection("ma_connection");
    sqlConnection.Open();
    SqlCommand commande = new SqlCommand("exec ma_proc", sqlConnection);
    commande.ExecuteNonQuery();
    commande.Connection.Close();
    sqlConnection.Close();
    commande.Dispose();
    sqlConnection.Dispose();
    Les 2 et 3 du code, ouvrent une connection sur le serveur et malgrès les Close() et les Dispose(), à la fin du code il y a toujours deux connections à l'état "sleeping" sur le serveur (Vu dans le moteur d'activité de SQL Management Studio).

    Quelqu'un à une idée de comment régler se problème?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Bon je me demandais pourquoi j'avais deux connections alors que je faisait seulement une seule requête. En faite, c'est parce que j'ouvrai la connection avant d'instancier ma commande. Voici donc le nouveau code mais j'ai toujours le même problème, à savoir la connection est toujours ouverte sur le serveur à la fin de l'exécution du code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SqlConnection sqlConnection = new SqlConnection(GlobalVariable.ConnectionStringLocalMSDE);
    SqlCommand commande = new SqlCommand("exec mesurer_taille_base", sqlConnection);
    sqlConnection.Open();
    commande.ExecuteNonQuery();
    sqlConnection.Close();
    commande.Dispose();
    sqlConnection.Dispose();

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Bon je viens de tester l'état de la connexion avec ConnexionState.Closed, juste après mon Close() et l'état indique que ma connexion est encore ouverte....

    Il semblerai que le Close() ne fasse pas son travail!!!

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Bon j'ai essayé d'utiliser le using de C# pour ma connexion mais ça fait pareil

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    using(SqlConnection sqlConnection = new SqlConnection(GlobalVariable.ConnectionStringLocalMSDE))
    {
    SqlCommand commande = new SqlCommand("exec mesurer_taille_base", sqlConnection);
    sqlConnection.Open();
    commande.ExecuteNonQuery();
    }
    D'après ce lien, lors d'un appel à un Close(), la connexion n'est pas fermée immédiatement mais il est remis dans un pooll de connexion afin d'être réutilisée pour augmenter les performances.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Bon je n'ai pas trouvé comment fermer cette connexion mais je j'ai tout de même réussis à trouver un moyen pour faire ce que je veux, en passant autrement, je ferme donc le sujet car mon problème n'a plus lieu d'être.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/07/2007, 14h33
  2. les cursor sur sql serveur
    Par hoummass dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/10/2005, 17h10
  3. Réponses: 5
    Dernier message: 03/10/2005, 13h02
  4. Réponses: 3
    Dernier message: 09/12/2004, 11h49
  5. visualiser les connection a un serveur mysql
    Par Thunder_nico dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/07/2004, 13h15

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