当前位置:  开发笔记 > 数据库 > 正文

存储过程间歇性地超时!

如何解决《存储过程间歇性地超时!》经验,为你挑选了3个好方法。

我从代码中调用了许多存储过程ExecuteNonQuery.

这一切都很好但是我的存储过程中有2个在今天间歇性地开始计时:

超时已过期.操作完成之前经过的超时时间或服务器没有响应.该语句已终止.

如果我从管理工作室手动执行sp,它仍然很好.

我的数据库中最近没有更改 - 我的命令超时是默认值.

任何线索?

编辑

针对SP的桌子正在运行它的巨大 - > 15 Gigs.重新启动该框 - 同样的问题,但这次无法让sp从Management Studio运行.

谢谢!



1> Sam Meldrum..:

Management studio在运行的查询/命令上设置无限超时.代码中的数据库连接将具有默认超时,您可以在命令对象上更改该超时.



2> Michal Dymel..:

尝试重新编译这些过程.我几次遇到这样的问题并没有找到问题的原因,但重新编译总是有帮助的.

编辑:

要重新编译proc,你去管理工作室,打开程序修改并点击F5或执行:EXEC sp_recompile'proc_name'



3> Marc Gravell..:

这通常与以下内容有关:

由于过度热切的计划重用(参数嗅探)导致错误的查询计划

不同的SET选项 - 特别是ANSI_NULLS和CONCAT_NULL_YIELDS_NULL

锁定(您可能具有更高的隔离级别)

索引需要重建/统计更新/等

SET选项可能导致某些索引类型无法使用(例如,持久计算列的索引 - 包括"提升的"xml/udf查询)

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有