我收到此错误:
The wait operation timed out
它出现在这一行:
da.Fill(result);
在以下代码中:
public static DataTable Get_Table_Grouped()
{
DataTable result = new DataTable();
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["My_Data"].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(@"
SELECT TOP 10 Attribute1, Attribute2, Attribute3, Attribute4, Attribute5,
Sum([Attribute6]) As Attribute6
FROM My_Table
group by Attribute1, Attribute2, Attribute3, Attribute4, Attribute5", con))
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(result);
con.Close();
da.Dispose();
}
}
return result;
}
以下是" My_Data"
的连接字符串<add name="My_Data" connectionString="Data Source=Database_Location;User ID=username;Password=my_password;" providerName="System.Data.SqlClient"/>
我该怎么做才能解决这个问题?有没有办法停止超时?当我在Microsoft SQL Server中直接尝试相同的查询时,它可以工作,但过了一段时间,我在代码中看不到导致超时的任何内容
答案 0 :(得分:1)
超时错误意味着查询花费的时间超过了您定义的最长时间。您需要改进查询,更改超时值或检查表上是否有锁。
您可以通过执行以下操作更改超时值:
cmd.CommandTimeout = 600;
您还可以通过在结尾添加Connection Timeout = 600来指定连接字符串中的超时值。在你的情况下:
Data Source=Database_Location;User ID=username;Password=my_password;Connection Timeout=600;
答案 1 :(得分:0)
命令超时的默认值为30 seconds
。如果您的查询存在大量数据,或者速度很慢,则必须手动设置超时值。 Francisco提供了几种可能性,但另一种可以增加超时的方法是通过SqlDataAdapter
实例:
da.SelectCommand.CommandTimeout = MyIntValue;
此外,由于您使用SqlConnection
语句呼叫using
,因此con.Close()
实际上是多余的。