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



我希望这个问题不要太愚蠢。我的 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;
 }

在漫长的过程完成后,我应该将超时设置回默认值吗?我正在寻找最佳实践。 谢谢 :-)

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

但是,当您在使用 SqlCommand 后将其释放时。无需重置命令超时

最佳做法是不要重用该命令,因为不应重用连接。 保持连接不利于缩放。

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();   
   }
}

最新更新