Frage

Ich arbeite an jemand anderes Projekt, das starken Gebrauch von Tableadapters macht. Die Website funktioniert, aber es regelmäßig fügt einen Eintrag im Ereignisprotokoll:

  

"ExecuteReader erfordert eine offene und   verfügbar Anschluss. Die Verbindung der   aktuelle Zustand verbindet. „

Die Seite keine Ausnahme, obwohl wirft es sei denn, es gibt hohe Verkehrs (5+ Anfragen pro Sekunde) die Ausnahme ist das gleiche, was auf dieser Codezeile:

this.Adapter.Fill(dataTable);
  

Stack-Trace: bei   System.Data.SqlClient.SqlConnection.GetOpenConnection (String   Verfahren) bei   System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute (String   Verfahren, SqlCommand command)

Wie kann ich diesen Fehler stoppen? Danke.

Es stellte sich heraus, dass ich nur die Hälfte das Bild bekommen, den Fehler, wenn er einen Fehler werfen würde, ist:

  

"Es gibt bereits eine offene Datareader   Mit diesem Befehl zugeordnet,   muss zuerst geschlossen werden. "

War es hilfreich?

Lösung

Ich würde sagen, Sie sind wahrscheinlich die gleiche Verbindung für mehrere Zwecke verwendet und einer von ihnen wird von einem anderen Thread geschlossen zu werden.

Ich würde empfehlen, eine Ablaufverfolgung hinzufügen, um herauszufinden, was los ist. Es ist schwer, diese Art von Fehlern zu debuggen, die, die Sie nur erhalten, wenn in der Produktion :(

Andere Tipps

Wenn scheint, wie Sie die zulässige Anzahl der offenen Verbindungen zu Ihrer Datenbank überschritten haben. Dies kann, indem sie Werte für die Min Pool Size und Max Pool Size Werte in der Verbindungszeichenfolge festgelegt werden. Ich denke, die Standardwerte sind 0 für Min Pool Size und 100 für Max Pool Größe, aber ich bin mir nicht sicher.

Versuchen Sie, sie zu ändern und sehen, ob es hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top