我有一个存储过程,直接对数据库执行时需要1秒钟才能运行。它返回46行数据。
存储过程在我的网站的代码中执行,并返回数据以创建报告。
这完全按照预期在本地工作,需要非常短的时间(1/2秒)来加载报告。首次部署网站时,报告按预期工作。
但是,在一段时间(大约半小时)之后,报告无法加载,因为存储过程已超时。
为了解决这个问题,如果我放弃并创建程序,它将重新开始工作,但这显然不能解决我的问题。
存储过程在代码中调用,如下所示:
DataSet content = new DataSet();
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmdSearchQuestionLibrary = db.GetStoredProcCommand("SP_NAME");
db.AddInParameter(cmdSearchQuestionLibrary, "@Param1", DbType.Int64, Id);
db.AddInParameter(cmdSearchQuestionLibrary, "@StartDate", DbType.DateTime, dtStartDate);
db.AddInParameter(cmdSearchQuestionLibrary, "@EndDate", DbType.DateTime, dtEndDate);
content = db.ExecuteDataSet(cmdSearchQuestionLibrary);
有谁之前经历过这个吗?或者知道可能导致问题的原因是什么?
您可以尝试的两件事1.更新统计(Transact-SQL):https://msdn.microsoft.com/en-us/library/ms187348.aspx
有时,找出问题的最佳方法是查看当时数据库中发生的情况。一个常见原因可能是基于阻止查询。
如果有帮助,我们的Cotega数据库监控服务为analyze a SQL Azure database提供了一个免费功能,qazxswpoi执行大多数用于查找此类问题的常见查询。这包括阻止可能提供一些额外见解的查询。
我希望这有帮助。
我有同样的问题,存储过程曾经工作多年,然后有一天它开始超时。我重新编译存储过程并再次发布Web应用程序。然后超时问题不再出现。