C# SQL Server查询从代码运行的时间比从Management Studio运行的时间要长

C# SQL Server查询从代码运行的时间比从Management Studio运行的时间要长,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我知道执行一个存储过程可能需要一些时间 当我从SQLServerManagementStudio运行它时,大约需要12-15分钟才能完成,这很好 但是,当我从我的C#asp.net web应用程序运行它时,它在40分钟后崩溃,仍然无法完成 这两次运行之间的区别是什么?如何将其修复为从应用程序运行 嘿,您可以尝试在web配置中增加连接字符串的超时时间: 只需更改超时键的值 <add key="Inf:DatabaseCommandTimeoutSeconds" value="20" />

我知道执行一个存储过程可能需要一些时间

当我从SQLServerManagementStudio运行它时,大约需要12-15分钟才能完成,这很好

但是,当我从我的C#asp.net web应用程序运行它时,它在40分钟后崩溃,仍然无法完成


这两次运行之间的区别是什么?如何将其修复为从应用程序运行

嘿,您可以尝试在web配置中增加连接字符串的超时时间: 只需更改超时键的值

<add key="Inf:DatabaseCommandTimeoutSeconds" value="20" />

为了解决崩溃问题,我们增加了IIS中的超时时间。 @Apostrofix发布了一个出乎意料的解决方案,这是我以前不熟悉的

这篇文章的引文是:

大多数情况下的建议修复(尽管它取决于 查询和存储过程的结构)是不使用参数的 直接存储在查询中,而是将它们存储到局部变量中 然后在查询中使用这些变量


参数嗅探或并发访问和阻塞您是否尝试过使用探查器捕获时间?是的,我尝试过,但没有太大帮助…可能是连接字符串中的某个内容?您确定它在存储过程调用时崩溃了,还是以后可能崩溃(一旦您从SQL检索数据)?在(任何循环)之后,你对数据做了什么?我知道我可以增加超时,但我不希望查询运行那么长时间,这样做是一个糟糕的解决方法…你能粘贴你的数据库查询吗??告诉我你处理了多少数据?也许我可以优化查询。好的。因此,您可以自己研究以优化查询。在SSMS中使用“包含实际执行计划”选项查看查询的每个部分使用的时间。建议的修复(将参数存储到局部变量)使我的SP的执行时间从4'30''降至15''!!