2017-05-17 163 views
0

我有一箇舊的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> 

這解決了我的問題。

問題是:爲什麼它解決了我的問題?我無法真正理解這一點。這對我來說非常有趣。

Full error code

+1

這可能是查詢和索引問題。我猜想這個表現在已經發展到了執行時間過長的地步。你能提供查詢的詳細信息嗎? –

+0

@JohnPasquet這個查詢在ms sql管理工作室中執行時間爲0.1秒。或者我沒有正確理解你? –

+0

規範性閱讀:[在應用程序中緩慢,在SSMS中快速?](http://www.sommarskog.se/query-plan-mysteries.html) –

回答

0

也許你的數據庫連接的查詢可能會花更多的時間來執行,或服務器正在採取更多的時間來執行數據庫查詢,您可以檢查其中DB託管服務器。 檢查是否有太多適用於IIS的應用程序池。

您還可以從配置文件中爲您的連接增加CommandTimeout。

+0

增加超時並非解決方案。上個月我沒有改變任何事情。但問題出現了。無論如何thx爲您的答案 –

+0

如果服務器花費太多時間來響應,服務器響應時間也會影響連接超時。有可能,服務器很慢。如果您使用硬編碼的數據庫查詢,仍然會等待超時。 – Azhar

+0

我不能想象,它可能是問題。 2天前它的工作時間<1秒。現在它可以工作30秒?這個數據庫至少工作了10年。服務器與IIS工作正常,我認爲(它有足夠的內存,CPU等)。我沒有改變很長一段時間 –