Suche

Domain-Check

Mein
Merkzettel





zum Merkzettel
Zertifizierung nach DIN EN ISO 9001:2008 und DIN EN ISO 14001
Microsoft Gold Certified Partner

Was man nicht im Kopf hat,
hat man in der Datenbank.

Es geht nicht immer darum alles zu wissen,
sondern zu wissen, wo es steht.

WEB00004 - SQL-Server Connection Pooling in ASP.NET

Das standardmäßig aktivierte Connection-Pooling bei .NET-SQL-Server-Verbindungen läuft normalerweise unbemerkt im Hintergrund ab. Erst wenn folgende Fehlermeldung auftaucht, beginnt man, sich darüber Gedanken zu machen:

Exception: System.InvalidOperationException Message: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached. Source: System.Data atSystem.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction) at System.Data.SqlClient.SqlConnection.Open() ...

Ein typischer Fehler ist in diesem Fall, dass Connections im Programmcode nicht ordnungsgemäß geschlossen werden. Normalerweise geht man als Programmierer davon aus, dass Datenbankverbindungen nach Beendigung des Skripts sowieso geschlossen werden. Für das Connection-Pooling sollten jedoch die Close()- oder Dispose()-Methoden aller geöffneten Connection-Objekte explizit aufgerufen werden, um solche Fehler zu vermeiden.
Dies hat den Hintergrund, dass das Skript zwar beendet wird, jedoch ohne den expliziten Close der Verbindungen dem Connection-Pool mitzuteilen, sodass die Verbindungen wieder verwendet werden können. So liegen dann unbenutzte Verbindungen im Pool, von denen der Poolmanager aber nicht weiß, dass diese wieder benutzt werden können.

Sehr informative Artikel zu diesem Thema finden Sie unter:
http://www.15seconds.com/issue/040830.htm
http://www.winnetmag.com/Article/ArticleID/38356/38356.html

Eine Anleitung zur Steuerung des Connection-Poolings gibt es auch bei Microsoft:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconconnectionpoolingforsqlservernetdataprovider.asp