2011-10-16 46 views
40

Questa è la stringa di connessione del mio database. Non ho impostato la dimensione massima del pool fino ad ora.Devo impostare la dimensione massima del pool nella stringa di connessione del database? Cosa succede se non lo faccio?

public static string srConnectionString = 
         "server=localhost;database=mydb;uid=sa;pwd=mypw;"; 

Così attualmente quante connessioni supporta la mia applicazione? Qual è la sintassi corretta per aumentare le dimensioni del pool di connessioni?

L'applicazione è scritta in C# 4.0.

+7

se non si dispone di un problema, lasciare come predefinito. –

+0

attualmente sì, ma penso che potrebbe causare problemi nei momenti di punta. Quindi preferisco impostare superiore a quello predefinito. come ho letto di default è 100 am ho ragione? – MonsterMMORPG

+0

La dimensione del pool di connessione predefinita di 100 è documentata da Microsoft all'indirizzo https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql-server-connection-pooling e probabilmente in altri luoghi. –

risposta

53

Attualmente l'applicazione supporta 100 connessioni in piscina. Ecco cosa stringa conn sarà simile se si vuole aumentare a 200:

public static string srConnectionString = 
       "server=localhost;database=mydb;uid=sa;pwd=mypw;Max Pool Size=200;"; 

È possibile esaminare il numero di connessioni con il database per l'utilizzo dell'applicazione, eseguendo sp_who procedure nel database. Nella maggior parte dei casi, le dimensioni del pool di connessione predefinite saranno sufficienti.

+1

Esiste un altro modo per impostare i pool di Max e Min che tramite il connectiontring? Preferirei farlo in codice ... – Jos

+0

Cosa succede quando si imposta la 'dimensione massima del pool', diciamo 30. Quando tutti gli slot sono riempiti con 'in uso' e 'connessioni inattive', le connessioni inattive saranno chiuso automaticamente per fare spazio a nuove connessioni? – Pierre

+2

@Pierre - riceverai un errore simile al seguente: System.InvalidOperationException: Timeout scaduto. Il periodo di timeout è trascorso prima di ottenere una connessione dal pool. Potrebbe essersi verificato perché tutte le connessioni in pool erano in uso e la dimensione massima del pool è stata raggiunta. a System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection (opzioni sqlConnectionString, booleani e IsInTransaction) a System.Data.SqlClient.SqlConnection.Open() –

8

"Al momento sì, ma penso che potrebbe causare problemi nei momenti di picco" posso confermare, che ho avuto un problema in cui ho ottenuto timeout a causa di richieste di picco. Dopo aver impostato la dimensione massima del pool, l'applicazione è stata eseguita senza problemi. IIS 7.5/ASP.Net

Problemi correlati