【问题标题】:ExecuteReader TimeOut solved by changing the name of the stored procedureExecuteReader TimeOut 通过更改存储过程的名称解决
【发布时间】:2017-02-22 18:56:01
【问题描述】:

今天发生在我身上。 几个月以来,我的 MVC.Net 应用程序运行良好。今天执行这部分代码的时候报错了(这是简化版)

var cmd = db.Database.Connection.CreateCommand();
cmd.CommandText = $"mySchema.myStoredProcedureName {param1};
db.Database.CommandTimeout = 0;
db.Database.Connection.Open();  
var reader = cmd.ExecuteReader();

其中 db 是 DbContext EF6。 timeOut 发生在最后一行 我尝试了“使用”的语法没有成功 我也尝试了以下,可能连接没有打开

while(db.Database.Connection.State != ConnectionState.Open) {
db.Database.Connection.Open(); }

不!成功。

存储过程在 SSMS 上 2 秒返回结果。

最后我用另一个名字创建了一个类似的存储过程 然后就成功了。

我的问题: - MSSQL 是否将我的存储过程列入黑名单?

【问题讨论】:

  • 原来的名字是以 sp_ 开头的吗?
  • 您是否重新创建了存储过程?此操作可能会导致存储过程的查询执行计划被刷新,这可能是解决问题的原因。另一种方法是使用 WITH RECOMPILE 执行存储过程 - 请参阅 technet.microsoft.com/en-us/library/…
  • @AndrewDeighton,每当它再次发生时,我都会尝试,因为我放弃了错误的程序,谢谢
  • @GuidoG 它没有

标签: sql-server entity-framework stored-procedures timeout


【解决方案1】:

我不认为它被列入黑名单。您的索引是否可能需要重建?换句话说,重命名确实可能没有解决问题,但在幕后进行了一些其他类型的 SQL Server 维护?

我有根据的猜测是,如果您没有更改任何代码,服务器提供商会影响您。

【讨论】:

  • 这应该是评论,而不是答案
  • 为什么? (我在这个论坛上比较活跃,所以没有讽刺的意思)基于这个问题,为什么不能是答案?
  • 因为尽管这些信息很有用,但它并不能回答他的问题。它仅说明了有关问题原因的一种可能想法。
  • 我说服务器上已经修复了一些问题,重命名 proc 确实没有解决任何问题。
  • 这可以是真的,但也不能是真的。知道这一点可能有助于 OP 找出发生了什么,但不是一个答案,恕我直言
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 2016-09-08
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 2011-09-16
相关资源
最近更新 更多