我正在使用MSSQL 2008R2。我寫了一個C#應用程序和故意沒有接近我的SqlConnection。在VS 2010上進行本地調試。以下是我使用的代碼:ADO.NET最大池大小行爲
protected void Button1_Click(object sender, EventArgs e)
{
string connectionString = "server=s; database=db; User ID=sa; Password=p; Max Pool Size=1;Connect Timeout=3";
SqlConnection conn = new SqlConnection(connectionString);
string query = "SELECT * FROM dbo.Numbers";
SqlCommand comm = new SqlCommand(query, conn);
conn.Open();
SqlDataReader reader = comm.ExecuteReader();
//reader.Read() and display results to Textbox1.Text
}
Max Pool Size = 1;期待在第二次瀏覽器上的第二次點擊嘗試時出錯。 爲什麼我可以去3個不同的瀏覽器(Mozilla,Chrome,IE)和每次調用點擊方法一次。這相當於3個同時連接的權利?超時錯誤僅在使用瀏覽器時發生,但在該瀏覽器上調用方法兩次。爲什麼是這樣?
在您發佈的鏈接,它們包圍的SqlConnection對象使用{}塊,關閉連接,一旦退出範圍,它返回到池中,我的例子沒有。連接池將重用連接,但如果我選擇不關閉連接,則必須創建另一個池。我的查詢很快,只有10位數字返回。 – invulnarable27 2013-02-25 19:44:41
@ invulnarable27:是的,他們正在發佈'使用'聲明,這是一個很好的做法,所以記住這一點。但是,與你的情況無關。然而,**因爲第一個查詢是short **,所以當它建立一個新的連接時,它不會在池中創建額外的連接** **請記住,池在連接字符串上工作。如果您要在第一個請求上創建一個*長時間運行的查詢*,然後在後續請求上嘗試創建另一個連接,則它將按預期失敗,因爲它需要*從池中獲取另一個連接。 * – 2013-02-26 12:27:39
我同意你長時間運行的查詢將保持在sqlconnection,導致在後續請求上創建第二個連接。我通過不調用connection.Close()來模擬一個長查詢(不確定)。當在IIS中部署時出現錯誤,VS的行爲不正確。 – invulnarable27 2013-02-27 08:18:41