2012-09-26 64 views
1

我有一個.NET Windows服務引用特定組件使得到SQL Server數據庫調用。這些SQL調用的連接字符串編碼爲從ConfigurationManager.ConnectionStrings [「myconnection」]拉取。的ConnectionString超時被忽略

在服務的安裝目錄,我有一個包含連接字符串「MyConnection的」一個配置文件,它原本沒連接超時值和長時間運行的查詢經過30秒時undesireably超時。但是,我們沒有看到在連接字符串中添加「Connection Timeout = 300」並重新啓動服務。

編輯:CommandTimeout屬性設置爲300以下。例如:

SqlCommand _command  = new SqlCommand(Sql, _con); 
      SqlDataReader _DR  = _command.ExecuteReader(); 
      _command.CommandTimeout = 300; 
      string _fieldValue; 
      string _columnValue; 

      while (_DR.Read()){ ... } 
+0

'CommandTimeout屬性設置爲30'。我們相信什麼? –

+2

@GreenShepherd - 嘗試調用的ExecuteReader之前改變的CommandTimeout。 – dugas

回答

3

您需要的SqlCommand.CommandTimeout設置爲一個較高的值。

SqlCommand.CommandTimeout是單個sql命令可以使用多長時間,而建立到sql server的連接可能需要多長時間。

我不相信SqlCommand.CommandTimeout可以從配置文件中設置 - 它必須在每個實例SqlCommand本身的設置。

+0

命令超時設置爲300 – GreenShepherd

+0

@GreenShepherd - 發佈您的代碼,你要設置它,也許這將有助於找到問題。從你所描述的,這是命令超時而不是連接。另外,如果它設置爲300,那麼當超時發生時,查詢是否需要超過300秒? – dugas

+0

我在OP中發佈了代碼。不,查詢超時發生時間不超過300秒。事實上,還有周圍的記錄啓動和停止查詢的時候,我們可以看到,它的SqlClient超時錯誤冒泡之前需要整整30秒此整個過程中的包裝。 – GreenShepherd