gpt4 book ai didi

sql - 存储过程在特定用户上失败

转载 作者:行者123 更新时间:2023-12-01 12:02:03 25 4
gpt4 key购买 nike

我有一个存储过程在特定用户上不断失败并显示错误消息“超时已过期”。

所有其他用户都能够很好地调用 sp,甚至我也能够使用查询分析器正常调用 sp——它在 10 秒内完成。然而,对于有问题的用户,日志显示 ASP 总是挂起大约 5 分钟,然后因超时而中止。

我像这样从 ASP 页面调用“EXEC SP_TV_GET_CLOSED_BANKS_BY_USERS '006111'

有人知道如何诊断问题吗?我已经尝试查看数据库中的死锁,但没有找到。

谢谢,

最佳答案

一些想法...

阅读评论表明参数嗅探导致了问题。

  • 对于其他用户,缓存的计划足以满足他们发送的参数
  • 对于这个用户,缓存的计划可能是错误的

如果此用户的行数比其他用户多得多,或者在另一个表中有行(因此不同的表/索引查找/扫描会更好),则可能会发生这种情况

测试参数嗅探:

  • 在调用或定义中使用 RECOMPILE(临时)。这对于复杂查询来说可能很慢
  • 超时后重建索引(或只是统计数据)并重试。这会使所有缓存的计划失效

修复:屏蔽参数

DECLARE @MaskedParam varchar(10)
SELECT @MaskedParam = @SignaureParam

SELECT...WHERE column = @MaskedParam

只需谷歌“参数嗅探”和“参数屏蔽”

关于sql - 存储过程在特定用户上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/272726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com