[英]How to stop a query that is taking too long to process
我有一個小程序,可讓學生測試在ASP.Net中構建並使用SQL Server數據庫的SQL查詢。 問題是某些查詢“掛起”了控制台和SQL Server。 考慮到這一點,我想將執行時間限制為10s或引發異常。
現在,代碼看起來像這樣:
SqlCommand cmd = new SqlCommand();
cmd.CommandText = TextBox1.Text; //Their query
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = 1;
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
try
{
GridView1.DataSource = cmd.ExecuteReader();
GridView1.DataBind();
int count = GridView1.Rows.Count;
Label1.Text = count.ToString() + " Rows";
}
catch (Exception ex)
{
Label1.Text = ex.Message;
GridView1.DataSource = null;
GridView1.DataBind();
}
finally
{
sqlConnection1.Close();
}
CommandtTimeout
不能為我完成此操作,因為通常問題是查詢在不斷地流傳輸行(主要是由於笛卡爾積運算)。
有沒有一種方法可以停止查詢中間執行而不會遍歷每一行?
而不是使用GridView1.DataSource = cmd.ExecuteReader();
和GridView1.DataBind();
,您將不得不編寫代碼來繼續讀取DataReader,直到您確定它花費的時間太長或已經讀取了太多的行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.