首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLDataReader。ExecuteReader超时

SQLDataReader。ExecuteReader超时
EN

Stack Overflow用户
提问于 2019-04-24 12:18:06
回答 1查看 1.9K关注 0票数 0

MS 2014后端(在同一台机器上)-相同连接中的Executereader times out (native error code: 258) @ second executereader()。为何会这样呢?(不涉及大数据量,所涉及的cmd字符串是正确的)

注意:如果所有的SELECT进入单独的连接,第二个总是超时,这并不重要。如果我用DataAdapter来捕获数据也不重要.超时..。见下文,谢谢你的建议:

代码语言:javascript
复制
using (SqlConnection c = new SqlConnection(cString))
{
    c.Open();
    using (SqlCommand cmd = new SqlCommand(querystringPO, c))
    {

        cmd.Parameters.AddWithValue("@paramRecipe", productionOrderNo);
        using (SqlDataReader rd = cmd.ExecuteReader())
        {
            dtRecipe = new DataTable();
            dtRecipe.Load(rd);
            rd.Close();
        }
    }
    if (dtRecipe.Rows.Count > 0)
    {
        string querystringOpDefs = "SELECT * FROM ReferencedFieldsView_OperationDefinition WHERE RecipeID=@paramOpDef";
        using (SqlCommand cmd1 = new SqlCommand(querystringOpDefs, c))
        {

            cmd1.Parameters.AddWithValue("@paramOpDef", dtRecipe.Rows[0].Field<int>("ID"));
            using (SqlDataReader rd = cmd1.ExecuteReader())
            {
                dtOpDefs = new DataTable();
                dtOpDefs.Load(rd);
                rd.Close();
            }


        }
        string querystringBOMItems = "SELECT * FROM ReferencedFieldsView_BomItem WHERE RecipeID=@paramBOMItem";

        using (SqlCommand cmd2 = new SqlCommand(querystringBOMItems, c))
        {

            cmd2.Parameters.AddWithValue("@paramBOMItem", dtRecipe.Rows[0].Field<int>("ID"));
            using (SqlDataReader rd = cmd2.ExecuteReader())
            {
                dtBOMItems = new DataTable();
                dtBOMItems.Load(rd);
            }
        }
    }
}

下表:

异常: System.InvalidOperationException:服务器操作遇到异常-> System.Data.SqlClient.SqlException:执行超时过期。在操作完成或服务器没有响应之前经过的超时时间。System.Data.SqlClient.SqlCommand.ExecuteReader()上的String方法)

EN

回答 1

Stack Overflow用户

发布于 2019-04-24 15:20:24

事实是,使用SQL 2K12,上面的片段都可以工作(相同的数据库,相同的等等)

但是,正如某人建议的那样,当显式添加req'd字段时,它将开始工作,而不是选择所有字段(*)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55829871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档