Asp.net

SQL 超時已過期 2 秒查詢

  • December 15, 2010

問題是我有一個儲存過程,它在 Sql Server Management Server 中持續執行,時間為 2 秒,但是當從程式碼中呼叫相同的儲存過程時,它會超時。

當它從 SSMS 正確執行時,它應該返回大約 30 行。

我嘗試了幾種不同的方法來從程式碼中呼叫該過程,但每次都是相同的結果。這剛剛開始發生,昨天它工作正常。

為我們呼叫該過程的首選方法是使用 Linq2Sql,它會給出以下錯誤消息:

超時已過。在操作完成之前超時時間已過或伺服器沒有響應。說明:執行目前 Web 請求期間發生未處理的異常。請查看堆棧跟踪以獲取有關錯誤及其源自程式碼的位置的更多資訊。

異常詳細資訊:System.Data.SqlClient.SqlException:超時已過期。在操作完成之前超時時間已過或伺服器沒有響應。

源錯誤:

Line 16:         public IMultipleResults GetTournamentRatingNonComplaintData([global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "DateTime")] System.Nullable<System.DateTime> startdate, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "DateTime")] System.Nullable<System.DateTime> enddate, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "Int")] System.Nullable<int> officialSportID, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "Char(1)")] System.Nullable<char> gender, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "Int")] System.Nullable<int> level)
Line 17:         {
Line 18:             IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), startdate, enddate, officialSportID, gender, level);
Line 19:             return ((IMultipleResults)(result.ReturnValue));
Line 20:         }

有誰知道在 SSMS 中執行它和通過程式碼執行它有什麼區別?可以做些什麼來解決這個問題?

您來自 SQL Management Studio 的連接配置可能與您在 .NET 中使用的連接字元串不同。

例如,請參閱 SQL Management Studio Tools/Options/Query Execution/SQL Server/Advanced 中預設設置的選項。

我懷疑兩個環境之間不同的某些設置會導致您的問題。要進行調試,您應該在執行 SP 之前嘗試將 SQL Server Management Studio 配置為使用與 .NET 連接字元串相同的配置。

或者,將 SET 語句添加到您的 .NET 查詢中,以配置您在 Management Studio 中看到的所有選項。

找到不同的設置並不總是那麼容易——根據我的經驗,一個常見的原因是不同的 ANSI 設置。

引用自:https://stackoverflow.com/questions/4451970