MS 2014后端(在同一台机器上)-相同连接中的Executereader times out (native error code: 258) @ second executereader()。为何会这样呢?(不涉及大数据量,所涉及的cmd字符串是正确的)
注意:如果所有的SELECT进入单独的连接,第二个总是超时,这并不重要。如果我用DataAdapter来捕获数据也不重要.超时..。见下文,谢谢你的建议:
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方法)
发布于 2019-04-24 15:20:24
事实是,使用SQL 2K12,上面的片段都可以工作(相同的数据库,相同的等等)
但是,正如某人建议的那样,当显式添加req'd字段时,它将开始工作,而不是选择所有字段(*)。
https://stackoverflow.com/questions/55829871
复制相似问题