我正在使用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