我有一个ASP报告。当我试图从浏览器生成它时,它崩溃了DB超时错误,但当我在SQL管理工作室执行完全相同的查询时,它在5秒内显示结果集。
查询是在代码隐藏文件中编写的不洁SQL(没有使用orm),它的参数来自web表单,所以我知道确切生成的查询将是什么。
问题的原因是什么?
首先,使用SQL Profiler附加到数据库,并确切地查看正在发送的查询。使用它进行其他测试。
第二,将连接超时设置为一些可笑的东西,比如300秒。然后对命令超时执行同样的操作。
第三,确保你的应用程序和你的管理工作室实例都在与同一个数据库通信…最好使用完全相同的用户权限。
再次参选。然后再运行一次。
有可能数据库正在花费时间进行初始加载(因此第一次查询需要一段时间),并且在数据库仍然"热"的情况下,通过管理工作室执行查询。
最后,你说管理工作室在5秒内显示结果。它是用5秒开始填充查询结果窗口,还是用5秒完成整个查询的执行?