簡體   English   中英

SQL 服務器的連接超時

[英]Connection timeout for SQL server

我可以通過修改web.config中的連接字符串來增加超時嗎?

是的,您可以附加;Connection Timeout=30到您的連接字符串並指定您想要的值。

Connection Timeout屬性中設置的超時值是以秒為單位的時間 如果未設置此屬性,則連接的超時值為默認值(15秒)。

此外,將超時值設置為0 ,您指定嘗試連接等待無限時間。 如文檔中所述,這是您不應在連接字符串中設置的內容:

值0表示沒有限制,應該在ConnectionString中避免,因為嘗試連接無限期等待。

嗯...

正如Darin所說,您可以指定更高的連接超時值,但我懷疑這是真正的問題。

當您獲得連接超時時,通常會出現以下問題之一:

  1. 網絡配置 - Web服務器/ dev框與SQL Server之間的連接速度較慢。 增加超時可以糾正這個問題,但調查潛在問題是明智之舉。

  2. 連接字符串。 我見過一些問題,不正確的用戶名/密碼會出於某種原因發出超時錯誤而不是真正的錯誤,表明“訪問被拒絕”。 這不應該發生,但這就是生活。

  3. 連接字符串2:如果您錯誤地或不完整地指定服務器的名稱(例如, mysqlserver而不是mysqlserver.webdomain.com ),您將獲得超時。 您是否可以使用與命令行的連接字符串中指定的服務器名稱完全相同的服務器名稱來ping服務器?

  4. 連接字符串3:如果服務器名稱在DNS(或主機文件)中,但指向不正確或無法訪問的IP,則會出現超時而不是機器未找到錯誤。

  5. 您正在調用的查詢超時。 它看起來像是與服務器的連接是問題,但是,根據應用程序的結構,您可能會在超時發生之前一直到執行查詢的階段。

  6. 連接泄漏。 正在運行多少個進程? 有多少開放連接? 我不確定原始ADO.NET是否執行連接池,在必要時自動關閉連接ala Enterprise Library,或者所有配置。 這可能是一個紅鯡魚。 但是,在使用WCF和Web服務時,我遇到了未關閉連接導致超時和其他不可預測行為的問題。

要嘗試的事情:

  1. 使用SQL Management Studio連接到服務器時是否會出現超時? 如果是這樣,網絡配置可能是問題。 如果在與Management Studio連接時沒有發現問題,則問題出在您的應用程序中,而不是服務器上。

  2. 運行SQL事件探查器,查看實際傳輸的內容。 您應該能夠判斷您是否真的在連接,或者查詢是否是問題。

  3. 在Management Studio中運行查詢,查看需要多長時間。

祝好運!

如果要動態更改它,我更喜歡使用SqlConnectionStringBuilder

它允許您將ConnectionString(即字符串)轉換為類Object,所有連接字符串屬性都將成為其Member。

在這種情況下,真正的優點是您不必擔心如果ConnectionTimeout字符串部分已經存在於連接字符串中?

此外,它創建一個Object,它總是很好地在對象中賦值而不是操縱字符串。

這是代碼示例:

var sscsb = new SqlConnectionStringBuilder(_dbFactory.Database.ConnectionString);

sscsb.ConnectTimeout = 30;

var conn = new SqlConnection(sscsb.ConnectionString);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM