我有一个存储过程,当直接对数据库执行时需要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);
以前有没有人经历过这个?或者知道可能导致问题的原因是什么?
答案 0 :(得分:2)
答案 1 :(得分:0)
有时,找出问题的最佳方法是查看当时数据库中发生的情况。一个常见原因可能是基于阻止查询。
如果有帮助,我们的Cotega数据库监控服务为analyze a SQL Azure database提供免费功能,该功能执行用于查找此类问题的大多数常见查询。这包括阻止查询,这可能会提供一些额外的见解。
我希望这会有所帮助。
答案 2 :(得分:0)
我有同样的问题,存储过程曾经工作多年,然后有一天它开始超时。 我重新编译存储过程并再次发布Web应用程序。然后超时问题不再出现。