我从代码中调用了许多存储过程ExecuteNonQuery
.
这一切都很好但是我的存储过程中有2个在今天间歇性地开始计时:
超时已过期.操作完成之前经过的超时时间或服务器没有响应.该语句已终止.
如果我从管理工作室手动执行sp,它仍然很好.
我的数据库中最近没有更改 - 我的命令超时是默认值.
任何线索?
编辑
针对SP的桌子正在运行它的巨大 - > 15 Gigs.重新启动该框 - 同样的问题,但这次无法让sp从Management Studio运行.
谢谢!
Management studio在运行的查询/命令上设置无限超时.代码中的数据库连接将具有默认超时,您可以在命令对象上更改该超时.
尝试重新编译这些过程.我几次遇到这样的问题并没有找到问题的原因,但重新编译总是有帮助的.
编辑:
要重新编译proc,你去管理工作室,打开程序修改并点击F5或执行:EXEC sp_recompile'proc_name'
这通常与以下内容有关:
由于过度热切的计划重用(参数嗅探)导致错误的查询计划
不同的SET选项 - 特别是ANSI_NULLS和CONCAT_NULL_YIELDS_NULL
锁定(您可能具有更高的隔离级别)
索引需要重建/统计更新/等
SET选项可能导致某些索引类型无法使用(例如,持久计算列的索引 - 包括"提升的"xml/udf查询)