所以我在一个有 10 年历史的系统上使用带有 .net 3.5 Web 前端的大型数据库(30 gig)sql 2005。它有新的和旧的位
我们遇到了一个越来越频繁发生的问题。
一个存储过程(到目前为止我们已经有 4 个不同的过程)决定它会超时。调用是从网络服务器发生的,并达到 30 秒超时并记录到我们的错误日志中。该网站使用单一登录(我知道这是错误的,但由于遗留代码无法更改)。
就在这之后,我运行了完全相同的呼叫,它需要(以我身份登录)1 秒。
这个问题一直存在于这个存储过程中,直到我们删除并重新创建它,得到大量超时。每个 sp 调用都有不同的参数。就像让我获得与当前用户有关的所有未签名班次一样,因此当前用户作为参数传入
该解决方案有效,但我真的不明白为什么。
我们的发布周期是两周,并且在此期间的任何时候都会发生此错误。它发生在发布一周后的第二天,最后一次是发布后的 12 天。
在每个版本中,我们使用 SQL 多脚本编写所有存储的过程/触发器/函数/视图,每次删除和重新创建自己。
我能想到的是存储的过程执行计划已损坏/出错,并且删除重新创建它可以清除这一点。
我正在考虑调用带有重新编译选项的 sps,这是禁止的吗?或可接受的方式