2012-11-15 50 views
0

我們有一個連接到SQL Server 2008 R2數據庫的WCF數據服務。當服務試圖從數據庫訪問數據時,連接超時值和超時異常被拋出之前,連接將超時。連接超時值之前的ADO.net連接超時值

這是連接字符串:

Data Source=XXXX;Initial Catalog=XXXX;MultipleActiveResultSets=False; 
Connection Timeout=80;Integrated Security=false;User ID=XXX;Password=XXX 

在此連接字符串,儘管我們給了80秒爲Connection Timeout,該連接會在大約700毫秒超時,並拋出異常

下方System.Data.SqlClient.SqlException(0x80131904):超時 已過期。
在完成 操作或服務器沒有響應之前已經超時。

這僅發生在某些查詢上。

任何幫助表示讚賞。

+4

打開連接或通過連接執行命令時超時嗎?有兩種類型的超時:連接超時和命令超時。後者是根據命令設置的。 – PHeiberg

回答

0

這種類型的超時可能有三個原因;

  1. 有一個僵局地方

  2. 數據庫的統計數據和/或查詢計劃緩存是不正確的

  3. 查詢過於複雜,需要調整

採取來自以下鏈接

Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The statement has been terminated

嘗試優化查詢這裏提到

+0

是的,我現在看到了。根據Sivvala只有一些查詢會導致此錯誤。所以如果我們設置SqlCommand。CommantTimeout = 0,希望問題得到解決 –

+0

是的,但我認爲不建議將它設置爲0;我通常更喜歡設置執行時間的限制。 – GolfWolf

+0

不設爲0! – Chris

0

我有同樣的問題,谷歌帶我到這裏。

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

在我的情況下,數據庫服務器上的mssql防火牆端口(默認= 1433 TCP)尚未打開。