是否有可能使用C#.NET,Windows Forms增加程序中的查询执行时间?
在我的程序中,我正在循环中执行查询。在前两次迭代中,查询每次执行10秒。在第三次迭代中,查询完成大约需要40-50秒,现在我无法从该查询中提取数据,因为引发了超时异常并且执行流程转到catch
块显示相应的错误消息。
是否有可能在Windows应用程序中使用C#.NET执行超过30秒的查询?
以下是我的代码:
try
{
tab = "dbo.basic_sp_mst";
error1 = "" + site + "." + orgname + "";
ls = "" + site + "." + site + "." + tab + "";
SqlDataAdapter da2 = new SqlDataAdapter("select * from " + ls + " where (last_updated_date between(getdate()-3) and (getdate()-1)) order by last_updated_date,bsp_item_cd", con);
DataSet ds2 = new DataSet();
da2.Fill(dt5);
dt6 = dt5;
SqlDataAdapter daa = new SqlDataAdapter("select a. bsp_item_cd ,a.bsp_mrp,a.last_updated_date,b.bsp_item_cd ,b.bsp_mrp,b.last_updated_date,c.name from basic_sp_mst a," + ls + " b,sys.servers c where a.bsp_item_cd = b.bsp_item_cd and a.bsp_mrp<> b.bsp_mrp and a.bsp_org_cd=" + s + " and c.name<>'001' and c.name='" + site + "'", con);......................(this is the main query) if this query is taking more than 30sec it is going to catch block.......
DataSet dss = new DataSet();
daa.Fill(dt7);
dt8 = dt7;
}
catch (Exception ex)
{
msg2 = " query time out error at store id:" + error1 + "";
dataGridView8.Rows.Add(msg2);
}
答案 0 :(得分:0)
只需增加SqlDataAdapter的CommandTimeout属性。
// Set timeout to 2 minutes
daa.SelectCommand.CommandTimeout=120;
此命令在new SqlDataAdapter
定义之后和调用Fill
之前。
另外,检查表是否在Where
命令的Select
部分的列上有索引,以尝试缩短查询时间。
您也可以use the MS SQL Server Profiler获得有关可以提高效果的索引的建议。