也許你會說,我在連接字符串中已經 設置了 Connect Timeout=80000 ,並且數據庫中超時連接也是設置的值是一個很大的值。為啥到了30秒,仍然超時了呢??
這是因為:
你的設置並沒有問題,是你混淆了 SqlCommand.CommandTimeout 和 SqlConnection.ConnectionTimeout 這兩個的區別了。
你的連接字符串中的超時只是設置的 SqlConnection.ConnectionTimeout 的值,而不是設置的 SqlCommand.CommandTimeout 的值。
SqlHelper 中並沒有 SqlCommand.CommandTimeout 的相關設置。需要你自己設置。
下面是兩個的比較:
SqlCommand.CommandTimeout
獲取或設置在終止執行命令的嘗試並生成錯誤之前的等待時間。
等待命令執行的時間(以秒為單位)。默認為 30 秒。
SqlConnection.ConnectionTimeout
獲取在嘗試建立連接時終止嘗試並生成錯誤之前所等待的時間。
等待連接打開的時間(以秒為單位)。默認值為 15 秒。
---------------------
作者:衣舞晨風
來源:CSDN
原文:https://blog.csdn.net/jiankunking/article/details/45221365
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
解決方法:
第一步:修改Web.config配置文件。在數據庫連接字符串中加上連接時間Connect Timeout,根據實際情況定時間。
- <!--連接數據庫-->
- <connectionStrings>
- <add name="strConnDB" connectionString=" Data Source=192.168.*.*;Initial Catalog=DatabaseName;Persist Security Info=True;User id=sa;Password=password;pooling=true;max pool size=800;min pool size=300;Connect Timeout=500"/>
- </connectionStrings>
第二步:修改command對象的CommandTimeout屬性。
- SqlCommand cmd = new SqlCommand();
- cmd.CommandTimeout = 180;
這里設置的時間是180秒,即三分鍾!可根據需要設置,如果過長,也可以設置為0,當此屬性設置為0時表示不限制時間。此屬性值應該慎用。
到此為止,問題完美解決。
補充:
SqlCommand.CommandTimeOut:獲取或設置在終止執行命令的嘗試並生成錯誤之前的等待時間。
SqlConnection.ConnectionTimeout:獲取在嘗試建立連接時終止嘗試並生成錯誤之前所等待的時間。