我有一個網絡服務,一直運行良好,現在幾年沒有修改。突然間,它今天決定它不會運行,並引發SQL超時:SQL Server超時故障排除
System.Data.SqlClient.SqlException:超時過期。操作完成之前超時的時間或服務器沒有響應。
有趣的是,這個Web服務與數據庫位於同一臺服務器上,並且如果我將查詢從SQL跟蹤中拖出並在管理工作室中運行,它將在一秒鐘內返回。但是,從Web服務中調用確切的30秒後,它會超時。我正在使用企業庫連接到數據庫,所以我無法想象隨機開始失敗。
我不太確定什麼能突然讓它停止工作。我回收了它所在的應用程序池,甚至重新啓動了我看到它正在使用的SQL過程。同樣的行爲。任何方式我可以解決這個問題?
更新:米奇釘它。一旦我在sproc定義中的「AS」關鍵字之前添加了「WITH RECOMPILE」,它就會恢復生機。好樣的!
@Chris:請注意,你不應該加上WITH RECOMPILE,除非它是最後一道溝渠。使用RECOMPILE FOR更有針對性 – 2009-03-05 00:16:57