2015-05-19 172 views
4

我得到了可怕的錯誤:什麼是默認的MaxPoolSize?

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. 

在SQL中我看到,我只有116個連接打開運行:

SELECT 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NumberOfConnections, 
    loginame as LoginName 
FROM 
    sys.sysprocesses 
WHERE 
    dbid > 0 
GROUP BY 
    dbid, loginame 
; 

116似乎低,我目前不設置MaxPoolSize。什麼是默認的MaxPoolSize?

我也確保完成後關閉所有連接。

+2

from [MSDN](https://msdn.microsoft.com/en-us/library/8xx3tyca(v = vs.110).aspx):指定的最大池大小(默認值爲100)。你所擁有的是一個超時錯誤。它只是表明它可能是由達到最大池大小引起的,但可能是由於許多其他原因而發生的。 –

+0

@GabrielRainha回答? – PhillyNJ

+0

你走了。現在試着告訴我們你想要在服務器上運行什麼,這樣我們就可以知道發生了什麼, –

回答

2

From MSDN:指定的最大池大小(100是默認值)。

你有什麼是超時錯誤。它只是表明它可能是由達到最大池大小引起的,但可能是由於許多其他原因而發生的。

0

默認情況下,SQL Server最多允許32767個連接。它可以使用sp_configure進行更改。要查看當前配置此設置,使用以下查詢:

select * from sys.configurations 
where name ='user connections' 
+0

Sql Server允許32767,但是來自@GabrielRainha的評論說連接字符串的默認值是100.我不要以爲這會回答MaxPoolSize的問題。 – PhillyNJ

+0

https://msdn.microsoft.com/zh-CN/LIBRARY/ms187030.aspx – Kashif

2

您可以嘗試添加到您的連接字符串下面的句子Max Pool Size=200,看看是否有幫助。

可能導致問題的另一件事是連接泄漏。也許在某些情況下,或者在某些情況下,您沒有關閉連接,導致問題。

這裏有一個我正在使用的連接字符串的例子。

Application Name=xxxx;Data Source=10.10.10.10;Initial Catalog=MyDB;User ID=sa;Password=password;Persist Security Info=True;MultipleActiveResultSets=True;Max Pool Size=200;Connection Lifetime=600;Asynchronous Processing=true;"

希望這有助於