連接問題不同的錯誤.net應用程序
我們有一個帶有一些關係數據庫的 SQL Server。我們有另一個帶有與數據庫通信的應用程序的網路伺服器。
我們的一位客戶有問題。我們每天晚上都會遇到一些錯誤,並且很難確定問題所在。有一個 web/wcf 服務。
我們使用 SQL Server Profiler 跟踪了數據庫,並通過以下方式辨識了很多連接:
Audit login RPC:Completed Audit logout
同一個 SPID 十倍以上。這是正常的行為嗎?
錯誤
- >
超時已過期。從池中獲取連接之前的超時時間已過。這可能是因為所有池連接都在使用中並且達到了最大池大小。
在 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection,TaskCompletionSource`1 重試,DbConnectionOptions userOptions,DbConnectionInternal oldConnection,DbConnectionInternal& 連接)
- >
超時已過。在操作完成之前超時時間已過或伺服器沒有響應。該語句已終止。
- >
連接超時已過期。嘗試使用登錄前握手確認時超時時間已過。這可能是因為登錄前握手失敗或伺服器無法及時響應。嘗試連接到此伺服器所花費的持續時間是 -
$$ Pre-Login $$初始化=21033;握手=0;
在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
等待操作超時
- >
從伺服器接收結果時發生傳輸級錯誤。(提供者:TCP Provider,錯誤:0 - 指定的網路名稱不再可用。)
在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
指定的網路名稱不再可用
- >
呼叫的目標已拋出異常。等待操作超時
- >
伺服器上發生錯誤,但錯誤消息和預設錯誤消息失去,或無法檢索。System.UnauthorizedAccessException:未授權訪問
我們需要一些建議來確定問題的原因。我們認為有幾個:網路、查詢性能等。
我認為您可能在 Web 伺服器上遇到 TCP 埠耗盡。避免 TCP/IP 埠耗盡是理解該問題的良好起點。這通常是應用程序設計/實現問題。
https://msdn.microsoft.com/en-us/library/aa560610%28v=bts.20%29.aspx?f=255&MSPPError=-2147217396
“Connection Timeout expired”錯誤一般出現在以下幾種情況:
- SQL Server 數據庫引擎的實例未執行。
- SQL Server Browser 服務未執行。
- TCP/IP 被禁用。
- 伺服器名稱鍵入不正確。
- 有網路問題。
- 數據庫引擎實例的 TCP/IP 埠被防火牆阻止。
- 客戶端和伺服器未配置為使用相同的網路協議。
要檢查如何根據上述原因跟踪此錯誤,請檢查Connection Timeout Expired。嘗試使用登錄前握手確認時超時時間已過