bas*_*gio 3 sql sql-server timeout sql-server-2000 asp-classic
我有一个存储过程经常失败,并在特定用户上显示错误消息"Timeout expired".
所有其他用户都能够很好地调用sp,甚至我可以使用查询分析器正常调用sp - 它只需10秒即可完成.但是对于有问题的用户,日志显示ASP总是挂起约5分钟,然后以超时中止.
我从ASP页面调用如此" EXEC SP_TV_GET_CLOSED_BANKS_BY_USERS '006111'"
有谁知道如何诊断问题?我已经尝试过查看数据库中的死锁,但没有找到任何死锁.
谢谢,
一些想法......
阅读评论表明,参数嗅探导致了这个问题.
如果此用户具有比其他用户多得多的行,或者在另一个表中有行(因此不同的表/索引搜索/扫描会更好),则可能发生这种情况
要测试参数嗅探:
修复:屏蔽参数
DECLARE @MaskedParam varchar(10)
SELECT @MaskedParam = @SignaureParam
SELECT...WHERE column = @MaskedParam
Run Code Online (Sandbox Code Playgroud)
只是google"参数嗅探"和"参数屏蔽"