SqlDataAdapter.fill超时,查询5秒以下

问题描述:

我有一个SqlDataAdapter正在填充33k行数据(大约15列)。 当在MS SSMS中运行查询时,我在约5秒内获得了我的行。 当使用我的代码,我得到一个超时,甚至超时参数设置为120秒:SqlDataAdapter.fill超时,查询5秒以下

private static DataTable getResult(string query, int someId, SqlConnection myConn) 
    { 
     SqlCommand myCmd = new SqlCommand(query, myConn); 
     SqlDataAdapter da = new SqlDataAdapter(); 
     DataTable dt = new DataTable(); 

     myCmd.Parameters.Add("@someId", SqlDbType.Int); 
     myCmd.Parameters["@someId"].Value = someId; 
     da.SelectCommand = myCmd; 
     da.SelectCommand.CommandTimeout = 120; 
     da.Fill(dt); 

     return dt; 
    } 

我已经尝试过的网站,如越来越高的连接数和超时值建议没有结果这一天...

关于如何避免超时错误的任何想法?

感谢您的见解。

+0

你确定你正在运行在SSMS相同的查询中的getResult方法?你的连接字符串登录也是一样的吗?在尝试将它们放入DataTable之前,您是否试图执行命令以查看结果? – xszaboj

+0

尝试在新的MS SSMS窗口中运行您的查询。如果您已经在同一个窗口中多次运行查询,那么它将采用相同的查询计划并更快地执行。检查新查询窗口花费多少时间。 – Niar

+0

查询和连接字符串严格相同。 无论何时/无论何时我在MS SSMS中运行查询,时间圈都是一样的。 – Wingi

好的,所以我终于可以通过在我的表上添加索引来摆脱超时错误,如this page [MSDN]中所述。

好像时间从圈MS SSMS的不同而不同.NET代码...