2012-09-26 65 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