1. 程式人生 > >SQL資料庫連線超時時間已到

SQL資料庫連線超時時間已到

問題:

1:System.InvalidOperationException: 超時時間已到。超時時間已到,但是尚未從池中獲取連線。出現這種情況可能是因為所有池連線均在使用,並且達到了最大池大小。

2:在向伺服器傳送請求時發生傳輸級錯誤。 (provider: TCP Provider, error: 0 - 由於系統緩衝區空間不足或佇列已滿,不能執行套接字上的操作。)

3:已成功與伺服器建立連線,但是在登入前的握手期間發生錯誤。 (provider: SSL Provider, error: 0 - 等待的操作過時。) ---> System.ComponentModel.Win32Exception (0x80004005): 等待的操作過時。

4:在從伺服器接收結果時發生傳輸級錯誤。 (provider: TCP Provider, error: 0 - 指定的網路名不再可用。) ---> System.ComponentModel.Win32Exception (0x80004005): 指定的網路名不再可用。

5:連線超時時間已到。在登入後階段超過了此超時時間。連線可能在等待伺服器完成登入過程並響應時超時;或者在嘗試建立多個活動連線時超時。 嘗試連線到此伺服器時花費的持續時間是 - [Pre-Login] initialization=2;handshake=5;[Login] initialization=0;authentication=0;[Post-Login] complete=14025; ---> System.ComponentModel.Win32Exception (0x80004005): 等待的操作過時。

解決方法:

設定最大超時時間

server=192.168.0.1;User ID=sa;Password=123;database=;Min Pool Size=0;Max Pool Size=30000;Pooling=true;

一般這種出現於高併發請求的情況,以下程式碼可以檢視SQL的連線數,這個可以作為監測的一種手段。

 SELECT [program_name] ,[spid],* FROM [sys].[sysprocesses] WHERE [spid]>50  and [program_name]='.Net SqlClient Data Provider' and dbid= db_id('')