Sql调用超时 - Asp.net

时间:2015-07-03 17:12:22

标签: c# sql asp.net

我收到此错误:

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中直接尝试相同的查询时,它可以工作,但过了一段时间,我在代码中看不到导致超时的任何内容

2 个答案:

答案 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()实际上是多余的。