2015-07-03 65 views
0

我得到這個錯誤:SQL調用超時 - Asp.net

The wait operation timed out 

而且它發生在這條線:

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; 
} 

以下:

da.Fill(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中直接嘗試相同的查詢時,它可以正常工作,但過了一段時間後,我的代碼中看不到任何可導致超時的內容

回答

1

超時錯誤意味着查詢花費的時間超過了您定義的最長時間。您需要改進查詢,更改超時值或檢查表上是否存在鎖。

你可以這樣做更改超時值:

cmd.CommandTimeout = 600; 

你也可以通過添加在最後連接超時= 600指定連接字符串中的超時值。在你的情況下:

Data Source=Database_Location;User ID=username;Password=my_password;Connection Timeout=600; 
0

命令超時的默認值是30 seconds。如果您的查詢拉入大量數據,或速度很慢,則必須手動設置超時值。舊金山提供了一對夫婦的可能性,但另一種方式,你可以增加超時是通過你的SqlDataAdapter例如:

da.SelectCommand.CommandTimeout = MyIntValue; 

而且,由於你與using聲明,呼籲你SqlConnection,你con.Close()實際上是多餘的。