2011-05-09 41 views
0

在使用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); 
} 
+4

查询............ – ariel 2011-05-09 04:54:46

回答

0

只是增加了SqlDataAdapter的的CommandTimeout属性。

// Set timeout to 2 minutes 
daa.SelectCommand.CommandTimeout=120; 

此命令new SqlDataAdapter定义后调用Fill之前去。

另外,检查表格是否在Select命令的Where部分的列上有索引,以尝试减少查询时间。

您也可以use the MS SQL Server Profiler接收有关可以提高性能的索引的建议。