我应该将T-SQL命令超时设置回默认值吗?

时间:2016-03-09 15:14:11

标签: tsql ado.net

我希望这个问题不是太愚蠢。我的ADO.Net中有一个很长的进程t-sql命令。我想增加命令超时(请参见下文)。

 cmd.CommandTimeout = 600; // default is 30 sec. increase to 10 mins
 try
 {
   cmd.ExecuteNonQuery();
   cmd.CommandTimeout = 30; // set it back
 }
 catch (Exception ex)
 {
    string debug = ex.Message;
    throw ex;
 }

长时间处理完成后,我应该将超时设置回默认值吗?我正在寻找最好的做法。谢谢: - )

2 个答案:

答案 0 :(得分:1)

如果重新使用命令对象,则可以将finally添加到try-catch,因此无论查询结果如何,都将重置它。 (成功或例外)。

但是当你使用它之后处理SqlCommand时。无需重置CommandTimeout

答案 1 :(得分:1)

最佳做法是不重复使用该命令,因为您不应该重用该连接。持有连接不利于扩展。

static private dbConnectionString = "CONNECTION DETAILS";  

using (SQLConnection connection = new SQLConnection(dbConnectionString))
{
   try 
   {   
      connection.Open();
      using (SQLCommand command = connection.CreateCommand())
      {
          command.CommandTimeout = 600;
          ......
          using(SQLDataReader rdr = command.ExecuteReader())
          {
          }
      }
   }
   catch(SQLException ex)
   {
   }
   finally 
   {
      connection.Close();   
   }
}