2012-05-07 95 views
1

我的網站正確運行在IIS下。但工作很長時間後。它開始給出超時錯誤,看起來像是在忙於其他工作。但是SQL服務器運行在我的本地主機上,除了當前的應用程序以外,沒有服務器使用/加載。獲取錯誤「超時已過期,操作完成或服務器沒有響應之前已超時。」

「超時過期。之前的操作的完成超時時間已過或服務器未響應」。

做系統重啓後只有我能繼續我的工作。需要幫助。在此先感謝

+3

聽起來像是你有泄漏的地方。你的網站在做什麼?你可以發佈代碼嗎? – zimdanen

+0

什麼是資源利用率統計數據,例如當這個盒子正在工作還是超時時?您是否正在使用IIS服務器或SQL Server消耗大量內存?處理器是否掛鉤? –

回答

1

這聽起來像是你正在執行超時。如果你達到這個門檻,你可能想要做一些分析,看看是否有性能瓶頸。要解決這個問題,你可以在web.config指定執行超時:

<httpRuntime executionTimeout="180" /> <!-- in seconds --> 

要更改SQL Server中的執行超時轉到服務器屬性:

http://img197.imageshack.us/img197/3152/srvrprops.png

在這裏看到更多詳細信息:
Changing the CommandTimeout in SQL Management studio

+0

HTTP運行時執行超時與SQL Server的超時無關。另外,在SQL Server Management Studio中更改執行超時不會影響從Management Studio外部執行的SQL查詢。這純粹是Management Studio設置,而不是SQL Server設置。 –

+0

@JakobChristensen:更新了插圖,用於設置查詢超時。 –

+0

看起來像它會做的伎倆 –

0

最後通過從過程緩存中清除執行計劃來解決此問題。

要清除計劃緩存中運行以下腳本...

SELECT plan_handle, st.text 
FROM sys.dm_exec_cached_plans 
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st 
where objtype = 'Proc' AND st.[text] like '%[Enter stored procedure name here]%' 


如果存儲過程中你的結果應該是這樣的緩存中存在:

results from execution plan query

從結果返回替換 plan_handle在下面的示例中...

-- Remove the specific execution plan from the cache. 
DBCC FREEPROCCACHE (0x050017005CBF201940A1CE91000000000000000000000000); 
GO 


更多信息here

+0

請發表一個例子作爲代碼,而不是鏈接 – jev

0

我已經使用了重新編譯來解決這個問題。

EXEC sp_recompile N'myproc' 
相關問題