2009-07-17 16 views
0

Kann jemand Hilfe dieser Fehler loszuwerden„Abrufen Timeout eine Verbindung aus dem Pool“

„Time Out expired.The verstrichene Zeit aus, bevor eine Verbindung aus dem Pool .Dieses zur Erlangung haben, weil alle gepoolten aufgetreten Verbindungen waren im Einsatz und maximale Poolgröße erreicht wurde“

Danke

Antwort

1

Diese Regel tritt auf, wenn nach Ausschöpfung aller verfügbaren Verbindungen zu einer Datenbank zu verbinden versucht. Dieser Artikel auf Tuning Up ADO.NET Connection Pooling in ASP.NET Applications sollte erklären, wie Sie das Problem beheben können, das Sie haben. That sagte Sachen zu versuchen: schließen Sie alle SqlConnections, beseitigen Sie alle Sqldatasources und erhöhen Sie die maximale Poolgröße.

1

haben Sie daran gedacht, jede Datenbankverbindung zu schließen, nachdem Sie sie benutzt haben?

-1

In der Verbindungszeichenfolge, stellen Sie sicher, setzen Sie Pooling = false

<connectionStrings> 
    <clear/> 
    <add 
name="YourConnectionString" 
connectionString="Server=localhost;Database=your_db;Uid=username; _ 
Pwd=password;pooling=false;" <---------------POOLING = FALSE 
providerName="yourprovider"/> 
</connectionStrings> 
+2

Aber was, wenn Verbindungspooling erforderlich ist? – CodeKiwi

+0

aber was ist, wenn es nicht ist? – Jason

+0

empfehle nicht Pooling ist ein schlechter Ratschlag. – newbie

3

Achten Sie darauf, für jedes Objekt mit Blöcke sind Implementierung, die Sie, dass erstellen IDisposable implementiert:

using (var connection = new SqlConnection(connectionString)) { 
    using (var command = new SqlCommand(query, connection)) { 
     using (var reader = command.ExecuteReader()) { 
      while (reader.Read()) { 
       // do something with row 
      } 
     } 
    } 
} 

Andernfalls werden Sie Ressourcen (einschließlich Verbindungen) verlieren, wenn eine Ausnahme auftritt.

BTW, in VB, das ist

Using connection As SqlConnection = New SqlConnection(connectionString)) 
... 
End Using 
Verwandte Themen