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