2013-08-01 163 views
3

我有一個存儲過程,當直接對數據庫執行時需要1秒運行。它返回46行數據。SQL Azure存儲過程超時問題

存儲過程在我的網站代碼中執行並返回數據以創建報告。

這與本地的預期完全一致,需要很短的時間(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

嘗試重新編譯運行中的SP。這可能會縮小問題的範圍。 [見這裏](http://blog.sqlauthority.com/2010/02/20/sql-server-recompile-stored-procedure-at-run-time/) –

回答

0

有時,找出問題的最好方法是查看當時數據庫中發生了什麼。一個常見原因可能是基於阻止查詢。

如果有幫助,我們的Cotega數據庫監控服務免費提供analyze a SQL Azure database的功能,該功能執行用於查找此類問題的大多數常見查詢。這包括阻止可能提供一些額外見解的查詢。

我希望這會有所幫助。

0

我同樣的問題,存儲過程用於工作多年,然後有一天它開始超時。 我重新編譯存儲過程並再次發佈Web應用程序。然後超時問題不再顯示。