Pool delle Connessioni

venerdì 24 novembre 2006 - 14.53

Ace1968 Profilo | Newbie

Quale e' il metodo migliore per tenere sotto controllo il numero di pool di connessioni aperte in SQL Server da un'applicazione web.
Se l'utente chiude l'applicazione dalla ControlBox di IE questi non passa dal metodo Page_Unload della form, quindi non vengono invocati i metodi Dispose degli oggetti istanziati...ergo le connessioni?

Grazie a chiunque mi possa chiarire questa problematica.

Ace1968 Profilo | Newbie

Hai ragione,
nella mia applicazione utilizzo sia DataSet che DataReader.
Il mio "problema", se cosi posso chiamarlo, e' questo:
Mi sono accorto, da Enterprise Manager (SQL 2000) di avere un po' troppi pool di connessione aperti, nonostante gli oggetti della mia applicazione abbiano tutti implementato il metodo Dispose che invoco regolarmente nell'evento Page_Unload della mia WebForm.
Nel dispose di ogni singolo oggetto e' previsto il Dispose dell'Oggetto DataAccess che utilizzo per accedere a SQL, quindi quello che materialmente apre e chiude le connessioni.
In ogni caso, i metodi FillDataSet e FillDataReader che ho implementato nella mia classe DataAccess non lasciano aperte le connessioni...invocano i rispettivi metodi Open e Close della connessione.
Il fatto che mi restino dei pool aperti mi preoccupa per il fatto che, se non sbaglio, i pool massimi che SQL server puo' mantenere aperti per default sono 100, quindi un inteso uso della webApplication potrebbe mandare una qualsiasi richiesta a SQL in TimeOut.
Non sono se sono stato piu' chiaro di prima, spero di si, in ogni caso grazie.

Alberto

Ace1968 Profilo | Newbie

OK, grazie per il consiglio, ti tengo aggiornato.

Alberto

Ace1968 Profilo | Newbie

Ho attivato Profiler sul mio SQL Server, e, come ovvio, vedo la traccia delle mie query e/o chiamate alle storedprocedure di turno.
Effettivamente un servizio che viene chiamato dalla mia applicazione non eseguiva il dispose della connessione, ma solo l'evento close().
Alle fine mi resta comunque un dubbio, il pool assegnato da SQL Server quando viene rilasciato, mi spiego.
Quando apro il mio applicativo in SQL vedo la creazione di 3 pool (posso pensare che siano dovuti agli oggetti che istanzio e che hanno bisogno di accedere a SQL per recuperare i dati).
A parte che non capisco perche' 3 e non uno solo.
Queste connessioni vengono comuque chiuse, e forzo il dispose...allora perche' uscendo dall'applicativo non vengono rilasciati i pool? (se forzo la chiusura del processo asp_net.exe da TaskManager...inutile dirtelo, spariscono i pool.

Ciao e grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5