我有一箇舊的ASP .NET Web Forms
應用程序。代碼隱藏 - VB .NET
。它一直工作了10年。一切都很好,工作速度非常快。「等待操作超時」的ASP命令中的sql命令應用程序
但昨天我面臨下一個問題:我的SQL
查詢到數據庫開始花費更長的時間。
我有下一個代碼中.aspx
文件:
<asp:SqlDataSource ID="SqlDataSource3" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand=" "SOME SELECT DB QUERY (hardcoded)" ">
<!-- I know, that it is bad way to configure select command. But I'm not an author -->
<SelectParameters>
<!-- Parameters -->
</SelectParameters>
</asp:SqlDataSource>
這SQL
查詢採取像與在MS SQL管理工作室的每個參數(測試)在服務器上被處理< 0.1
秒。沒關係。
但我的應用程序開始超時錯誤。在SQL服務器分析器中,這個查詢(硬編碼)佔用了>30
秒(超時)(有一些參數,它的工作時間爲14-20秒,但它仍然更長,就像2天前一樣)。
重要:我已經解決了這個問題。我使用此選擇查詢在我的MS SQL數據庫中創建了存儲過程。
而改變.aspx
代碼,這一個:
<asp:SqlDataSource ID="SqlDataSource3" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand=" "PROCEDURENAME" " SelectCommandType="StoredProcedure">
<SelectParameters>
<!-- Parameters -->
</SelectParameters>
</asp:SqlDataSource>
這解決了我的問題。
問題是:爲什麼它解決了我的問題?我無法真正理解這一點。這對我來說非常有趣。
這可能是查詢和索引問題。我猜想這個表現在已經發展到了執行時間過長的地步。你能提供查詢的詳細信息嗎? –
@JohnPasquet這個查詢在ms sql管理工作室中執行時間爲0.1秒。或者我沒有正確理解你? –
規範性閱讀:[在應用程序中緩慢,在SSMS中快速?](http://www.sommarskog.se/query-plan-mysteries.html) –