[英]What would be a connection string for Ironpython to connect to a SQL Server CE?
[英]What is “Connect Timeout” in sql server connection string?
我有以下連接字符串(從 sql server 的屬性中獲取):
Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\myUser\Desktop\adoBanche\Banche\bin\Debug\banche.mdf;Integrated Security=True;Connect Timeout=30
我不明白Timeout=30
是什么意思。 誰能解釋一下是什么意思?
這是創建連接的超時,而不是通過該連接執行的命令的超時。
參見例如http://www.connectionstrings.com/all-sql-server-connection-string-keywords/ (請注意,該屬性是“連接超時”(或“連接超時”),而不僅僅是“超時”)
來自評論:
無法通過連接字符串設置命令超時。 但是,SqlCommand 有一個CommandTimeout屬性(派生自 DbCommand),您可以在其中設置每個命令的超時時間(以秒為單位)。
請注意,當您使用Read()
循環查詢結果時,每次讀取都會重置超時。 超時是針對每個網絡請求,而不是針對總連接。
Connect Timeout=30
表示sql server應該在30秒內建立連接。否則當前的連接請求將被取消。它用於避免連接嘗試無限期等待。
Connection Timeout=30表示數據庫服務器有 30 秒的時間建立連接。
連接超時指定時間限制(以秒為單位),必須在該時間限制內建立到指定服務器的連接,否則將引發異常,即它指定在建立數據庫連接時允許程序被阻止的時間。
DataSource=server;
InitialCatalog=database;
UserId=username;
Password=password;
Connection Timeout=30
SqlConnection.ConnectionTimeout。 指定 SQL Server 服務必須響應連接嘗試的秒數。 這始終設置為連接字符串的一部分。
注意事項:
該值以秒表示,而不是毫秒。
默認值為 30 秒。
值 0 表示無限期等待並且永不超時。
此外, SqlCommand.CommandTimeout指定在 SQL Server 上運行的特定查詢的超時值,但是這是通過 SqlConnection 對象/設置(取決於您的編程語言)設置的,而不是在連接字符串中,即它指定您將使用多長時間允許您的程序在命令運行時暫停。
獲取嘗試建立連接時等待的時間,然后終止嘗試並生成錯誤。
簡而言之,連接的工作原理
程序和數據庫服務器之間的連接依賴於握手。
這意味着當連接打開時,建立連接的線程將向數據庫服務器發送網絡數據包。 然后,此線程將暫停,直到從數據庫服務器收到有關此連接的網絡數據包或連接超時到期。
連接超時
連接超時以從連接打開時起以秒為單位進行測量。
當超時到期時,線程將繼續,但它會報告連接失敗。
如果連接字符串中沒有為連接超時指定值,則默認值為 30 。
大於零的值表示在放棄之前的秒數,例如值 10 表示等待 10 秒。
值 0表示永不放棄等待連接
注意:不建議使用 0 值,因為連接請求數據包或服務器響應數據包都可能丟失。 你會認真准備等待一天的回應可能永遠不會到來嗎?
我應該將連接超時值設置為什么?
此設置應取決於您的網絡速度以及您准備允許線程等待響應的時間。
例如,在一天中每小時重復一次的任務中,我知道我的網絡總是在一秒內做出響應,因此為了安全起見,我將連接超時值設置為 2。 然后我會在放棄之前再試三遍,要么提出支持請求,要么升級類似的現有支持請求。
測試您自己的網絡速度,並考慮當連接失敗作為一次性失敗時以及當它反復和偶爾失敗時該怎么辦。
連接請求和超時錯誤之間的最長時間。 當客戶端嘗試建立連接時,如果達到超時等待限制,它將停止嘗試並引發錯誤。
獲取嘗試建立連接時等待的時間,然后終止嘗試並生成錯誤。 (MSDN,SqlConnection.ConnectionTimeout 屬性,2013)
默認連接超時為 240,但如果您遇到連接超時問題,則可以增加到“300”“連接超時 = 300”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.