Discussion:
已超過連接逾時的設定 要怎麼解決?
(时间太久无法回复)
tommy
2005-09-05 04:11:01 UTC
Permalink
我用asp.net寫了一程式去連結資料庫
有個資料庫的運算會執行大約一分鐘才傳回結果
我在開發環境上測試都沒問題
但是拿到實際環境上測試都會傳回以下錯誤 (實際環境web和db是兩台機器)
我的資料庫連線字串為 server=localhost;database=abc;uid=sa;password=1234

System.Web.HttpUnhandledException: 傳回型別 System.Web.HttpUnhandledException
的例外狀況。 ---> System.Data.SqlClient.SqlException:
已超過連接逾時的設定。在作業完成之前超過逾時等待的時間,或者是伺服器未回應。

請問有什麼辦法可以解決嗎?
先謝謝了
SupaJay
2005-09-05 06:31:31 UTC
Permalink
"tommy" 來函:
Post by tommy
但是拿到實際環境上測試都會傳回以下錯誤 (實際環境web和db是兩台機器)
我的資料庫連線字串為 server=localhost;database=abc;uid=sa;password=1234
^^^^^^^^^^

如果你實際環境 WEB 跟 DB 是兩台機器 那SERVER就不是 localhost
localhost 是指同一台機器 所以你連線會失敗
請查出 DB 那台機器的 網路名稱 或是IP 位置 取代localhost
tommy
2005-09-05 06:40:32 UTC
Permalink
ㄜ 不好意思 我沒說清楚
當然我已經把localhost改成db server的ip
且執行一般的查詢都沒問題
只是執行到一個需要較長時間的資料庫運算 (約一分鐘)
就會出現該錯誤
請有經驗前輩指點一下
謝謝!

"SupaJay" 來函:
Post by SupaJay
"tommy" 來函:
Post by tommy
但是拿到實際環境上測試都會傳回以下錯誤 (實際環境web和db是兩台機器)
我的資料庫連線字串為 server=localhost;database=abc;uid=sa;password=1234
^^^^^^^^^^
如果你實際環境 WEB 跟 DB 是兩台機器 那SERVER就不是 localhost
localhost 是指同一台機器 所以你連線會失敗
請查出 DB 那台機器的 網路名稱 或是IP 位置 取代localhost
€pŠ¶
2005-09-05 08:56:33 UTC
Permalink
§A¥i¯à»Ý­nŠb Connection String €€«ü©wžûªøªº Timeout ®É¶¡ .
ex: server=localhost;database=abc;uid=sa;password=1234; Connection
Timeout=400 (³æŠì¬°¬í, ¹w³]­È¬° 15)
£­ €£Šn·N«ä §ÚšS»¡²M·¡
·íµM§Ú€wžg§âlocalhost§ïŠšdb serverªºip
ŽN·|¥X²{žÓ¿ù»~
ÁÂÁÂ!
"SupaJay" šÓšç¡G
"tommy" šÓšç¡G
Šý¬O®³šì¹ê»ÚÀô¹Ò€WŽúžÕ³£·|¶ÇŠ^¥H€U¿ù»~ (¹ê»ÚÀô¹Òweb©Mdb¬Ošâ¥xŸ÷Ÿ¹)
§Úªºžê®Æ®w³sœuŠrŠê¬° server=localhost;database=abc;uid=sa;password=1234
^^^^^^^^^^
ŠpªG§A¹ê»ÚÀô¹Ò WEB žò DB ¬Ošâ¥xŸ÷Ÿ¹ šºSERVERŽN€£¬O localhost
œÐ¬d¥X DB šº¥xŸ÷Ÿ¹ªº ºôžôŠWºÙ ©Î¬OIP Šìžm šú¥Nlocalhost
tommy
2005-09-05 09:10:02 UTC
Permalink
我實際去sql query analyzer 執行該預存程序
發現需要兩分鐘十秒左右
於是我把 Connection Timeout=300
從網頁上執行 卻依然出現該錯誤
好奇怪 有辦法解決嗎?
還有 Connection Timeout 是不是資料庫建立連線的等待時間
如果連現已經建立
正在等待資料回傳的時間 不知道應該要設定哪個值?

"小朱" 來函:
你可能需要在 Connection String 中指定較長的 Timeout 時間 .
ex: server=localhost;database=abc;uid=sa;password=1234; Connection
Timeout=400 (單位為秒, 預設值為 15)
Post by tommy
ㄜ 不好意思 我沒說清楚
當然我已經把localhost改成db server的ip
且執行一般的查詢都沒問題
只是執行到一個需要較長時間的資料庫運算 (約一分鐘)
就會出現該錯誤
請有經驗前輩指點一下
謝謝!
"SupaJay" 來函:
Post by SupaJay
"tommy" 來函:
Post by tommy
但是拿到實際環境上測試都會傳回以下錯誤 (實際環境web和db是兩台機器)
我的資料庫連線字串為 server=localhost;database=abc;uid=sa;password=1234
^^^^^^^^^^
如果你實際環境 WEB 跟 DB 是兩台機器 那SERVER就不是 localhost
localhost 是指同一台機器 所以你連線會失敗
請查出 DB 那台機器的 網路名稱 或是IP 位置 取代localhost
tommy
2005-09-05 09:37:53 UTC
Permalink
剛剛我發現
當我把實際的資料庫放到開發環境下測試
也是會出現同樣的錯誤訊息
所以資料愈多執行時間愈久就會產生該問題了
我是呼叫 sqlCommand 的 ExecuteNonQuery 來執行預存程序
經過交叉測試 發現只要預存程序執行超過三十秒
系統就會丟出該例外
目前只能到資料庫主機上
手動去執行該預存程序來解決問題 (需要兩分鐘十秒左右)
有更好的解決辦法嗎?
請先進指導一下 謝謝!

"tommy" 來函:
Post by tommy
我實際去sql query analyzer 執行該預存程序
發現需要兩分鐘十秒左右
於是我把 Connection Timeout=300
從網頁上執行 卻依然出現該錯誤
好奇怪 有辦法解決嗎?
還有 Connection Timeout 是不是資料庫建立連線的等待時間
如果連現已經建立
正在等待資料回傳的時間 不知道應該要設定哪個值?
"小朱" 來函:
你可能需要在 Connection String 中指定較長的 Timeout 時間 .
ex: server=localhost;database=abc;uid=sa;password=1234; Connection
Timeout=400 (單位為秒, 預設值為 15)
Post by tommy
ㄜ 不好意思 我沒說清楚
當然我已經把localhost改成db server的ip
且執行一般的查詢都沒問題
只是執行到一個需要較長時間的資料庫運算 (約一分鐘)
就會出現該錯誤
請有經驗前輩指點一下
謝謝!
"SupaJay" 來函:
Post by SupaJay
"tommy" 來函:
Post by tommy
但是拿到實際環境上測試都會傳回以下錯誤 (實際環境web和db是兩台機器)
我的資料庫連線字串為 server=localhost;database=abc;uid=sa;password=1234
^^^^^^^^^^
如果你實際環境 WEB 跟 DB 是兩台機器 那SERVER就不是 localhost
localhost 是指同一台機器 所以你連線會失敗
請查出 DB 那台機器的 網路名稱 或是IP 位置 取代localhost
€pŠ¶
2005-09-05 14:34:10 UTC
Permalink
šº±z¥i¥HžÕžÕ SqlCommand.CommandTimeout , ¹w³]¬O 30 ¬í ... «e­±ªº Connection
Timeout ¬O³s±µ®Éªº time out ^^" , €£Šn·N«ä , Š^µª¿ù»~ ...
§Ú¹ê»Ú¥hsql query analyzer °õŠæžÓ¹wŠsµ{§Ç
µo²{»Ý­nšâ€ÀÄÁ€Q¬í¥ª¥k
©ó¬O§Ú§â Connection Timeout=300
±qºô­¶€W°õŠæ «ošÌµM¥X²{žÓ¿ù»~
Šn©_©Ç Š³¿ìªkžÑšM¶Ü?
ÁÙŠ³ Connection Timeout ¬O€£¬Ožê®Æ®w«Ø¥ß³sœuªºµ¥«Ý®É¶¡
ŠpªG³s²{€wžg«Ø¥ß
¥¿Šbµ¥«Ýžê®ÆŠ^¶Çªº®É¶¡ €£ªŸ¹DÀ³žÓ­n³]©w­þ­Ó­È?
"€pŠ¶" šÓšç¡G
Post by €pŠ¶
§A¥i¯à»Ý­nŠb Connection String €€«ü©wžûªøªº Timeout ®É¶¡ .
ex: server=localhost;database=abc;uid=sa;password=1234; Connection
Timeout=400 (³æŠì¬°¬í, ¹w³]­È¬° 15)
£­ €£Šn·N«ä §ÚšS»¡²M·¡
·íµM§Ú€wžg§âlocalhost§ïŠšdb serverªºip
ŽN·|¥X²{žÓ¿ù»~
ÁÂÁÂ!
"SupaJay" šÓšç¡G
"tommy" šÓšç¡G
Šý¬O®³šì¹ê»ÚÀô¹Ò€WŽúžÕ³£·|¶ÇŠ^¥H€U¿ù»~ (¹ê»ÚÀô¹Òweb©Mdb¬Ošâ¥xŸ÷Ÿ¹)
§Úªºžê®Æ®w³sœuŠrŠê¬°
server=localhost;database=abc;uid=sa;password=1234
^^^^^^^^^^
ŠpªG§A¹ê»ÚÀô¹Ò WEB žò DB ¬Ošâ¥xŸ÷Ÿ¹ šºSERVERŽN€£¬O localhost
œÐ¬d¥X DB šº¥xŸ÷Ÿ¹ªº ºôžôŠWºÙ ©Î¬OIP Šìžm šú¥Nlocalhost
tommy
2005-09-06 06:43:01 UTC
Permalink
謝謝
問題已經解決了

"小朱" 來函:
那您可以試試 SqlCommand.CommandTimeout , 預設是 30 秒 ... 前面的 Connection
Timeout 是連接時的 time out ^^" , 不好意思 , 回答錯誤 ...
Post by tommy
我實際去sql query analyzer 執行該預存程序
發現需要兩分鐘十秒左右
於是我把 Connection Timeout=300
從網頁上執行 卻依然出現該錯誤
好奇怪 有辦法解決嗎?
還有 Connection Timeout 是不是資料庫建立連線的等待時間
如果連現已經建立
正在等待資料回傳的時間 不知道應該要設定哪個值?
"小朱" 來函:
你可能需要在 Connection String 中指定較長的 Timeout 時間 .
ex: server=localhost;database=abc;uid=sa;password=1234; Connection
Timeout=400 (單位為秒, 預設值為 15)
Post by tommy
ㄜ 不好意思 我沒說清楚
當然我已經把localhost改成db server的ip
且執行一般的查詢都沒問題
只是執行到一個需要較長時間的資料庫運算 (約一分鐘)
就會出現該錯誤
請有經驗前輩指點一下
謝謝!
"SupaJay" 來函:
Post by SupaJay
"tommy" 來函:
Post by tommy
但是拿到實際環境上測試都會傳回以下錯誤 (實際環境web和db是兩台機器)
我的資料庫連線字串為
server=localhost;database=abc;uid=sa;password=1234
^^^^^^^^^^
如果你實際環境 WEB 跟 DB 是兩台機器 那SERVER就不是 localhost
localhost 是指同一台機器 所以你連線會失敗
請查出 DB 那台機器的 網路名稱 或是IP 位置 取代localhost
wawa
2005-09-06 06:49:31 UTC
Permalink
請問您是如何解決呢?
我也有發生同樣的事情!
可否請您告知如何解決呢?

继续阅读narkive:
Loading...