Question

Je travaille sur le projet de quelqu'un d'autre qui utilise beaucoup tableAdapters. Le site fonctionne mais Il ajoute régulièrement une entrée dans le journal des événements:

  

"ExecuteReader nécessite une interface ouverte et   Connexion disponible. La connexion   l'état actuel est en cours de connexion. "

Le site ne lève pas d'exception mais, sauf en cas de trafic important (plus de 5 requêtes par seconde), l'exception est la même et pointe sur cette ligne de code:

this.Adapter.Fill(dataTable);
  

Trace de pile: à   System.Data.SqlClient.SqlConnection.GetOpenConnection (String   méthode) à   System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute (String   méthode, commande SqlCommand)

Comment puis-je arrêter cette erreur? Merci.

Il s’est avéré que je ne recevais que la moitié de la photo, l’erreur, quand il jetterait une erreur est:

  

"Il existe déjà un DataReader ouvert.   associé à cette commande qui   doit être fermé en premier. "

Était-ce utile?

La solution

Je dirais que vous utilisez probablement la même connexion à plusieurs fins et que l'une d'elles est fermée par un autre thread.

Je recommanderais d’ajouter des traces pour comprendre ce qui se passe. Il est difficile de déboguer ce genre d’erreurs, celles que vous n’avez que lorsqu’elles sont en production :(

Autres conseils

Si vous semblez avoir dépassé le nombre autorisé de connexions ouvertes à votre base de données. Cela peut être défini dans la chaîne de connexion en donnant des valeurs pour les valeurs Taille minimale du pool et Taille maximale du pool. Je pense que les valeurs par défaut sont 0 pour la taille minimale du pool et 100 pour la taille maximale du pool, mais je ne suis pas sûr.

Essayez de les changer et voyez si cela vous aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top