【问题标题】:SqlDataAdapter.fill timeout, query under 5 secSqlDataAdapter.fill 超时,查询不到 5 秒
【发布时间】: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


【解决方案1】:

好的,所以我终于能够通过在我的表上添加索引来消除超时错误,正如this page [MSDN] 中所述。

似乎时间间隔从 MS SSMS 到 .net 代码不同......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多