【发布时间】:2016-11-16 10:15:13
【问题描述】:
我有一个 SqlDataAdapter,它正在填充 33k 行数据(大约 15 列)。 在 MS SSMS 中运行查询时,我在大约 5 秒内得到我的行。 使用我的代码时,即使将超时参数设置为 120 秒,我也会超时:
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;
}
我已经尝试过来自网站的建议,例如获得更高的连接数和超时值,直到今天都没有结果......
关于如何避免超时错误的任何想法?
感谢您的见解。
【问题讨论】:
-
您确定在 SSMS 中运行与 getResult 方法中相同的查询吗?你的连接字符串登录也一样吗?在尝试将结果放入 DataTable 之前,您是否尝试只执行命令来查看结果?
-
尝试在新的 MS SSMS 窗口中运行您的查询。如果您在同一个窗口中多次运行查询,那么它将采用相同的查询计划并执行得更快。在新的查询窗口中检查需要多长时间。
-
查询和连接字符串是完全一样的。无论何时/何时我在 MS SSMS 中运行查询,时间间隔都是相同的。
标签: c# sqldataadapter timeoutexception