3

我有一个存储过程,当直接对数据库执行时需要 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);

有谁之前经历过这个吗?或者知道是什么导致了这个问题?

4

3 回答 3

2

您可以尝试 2 件事 1. 更新统计信息 (Transact-SQL):https ://msdn.microsoft.com/en-us/library/ms187348.aspx

  1. sp_recompile (Transact-SQL):https ://msdn.microsoft.com/en-us/library/ms181647.aspx
于 2016-05-16T18:37:41.597 回答
0

有时,找出问题所在的最佳方法是查看当时数据库中发生的情况。一个常见的原因可能是基于阻塞查询。

如果有帮助,我们的 Cotega 数据库监控服务提供免费功能来分析 SQL Azure 数据库,该数据库执行用于查找此类问题的大多数常见查询。这包括阻止查询,这可能会提供一些额外的见解。

我希望这有帮助。

于 2013-08-01T21:25:25.100 回答
0

我有同样的问题,存储过程曾经工作多年,然后有一天它开始超时。我重新编译存储过程并再次发布 Web 应用程序。然后超时问题不再出现。

于 2018-01-03T16:37:15.773 回答