增加 SQL 命令的命令超时

我有一个小问题,希望有人能给我一些建议。我正在运行一个 SQL 命令,但似乎需要这个命令约2分钟才能返回数据,因为有很多数据。但是默认的连接时间是30秒,我如何增加这个时间,并将其应用到这个命令?

public static DataTable runtotals(string AssetNumberV, string AssetNumber1V)
{
DataTable dtGetruntotals;


try
{
dtGetruntotals = new DataTable("Getruntotals");


//SqlParameter AssetNumber = new SqlParameter("@AssetNumber", SqlDbType.VarChar, 6);
//AssetNumber.Value = AssetNumberV;


SqlParameter AssetNumber = new SqlParameter("@AssetNumber", SqlDbType.VarChar, 10);
AssetNumber.Value = AssetNumberV;


SqlParameter AssetNumber1 = new SqlParameter("@AssetNumber1", SqlDbType.VarChar, 10);
AssetNumber1.Value = AssetNumber1V;


SqlCommand scGetruntotals = new SqlCommand("EXEC spRunTotals @AssetNumber,@AssetNumber1 ", DataAccess.AssetConnection);
// scGetruntotals.Parameters.Add(AssetNumber);
scGetruntotals.Parameters.Add(AssetNumber);
scGetruntotals.Parameters.Add(AssetNumber1);


SqlDataAdapter sdaGetruntotals = new SqlDataAdapter();
sdaGetruntotals.SelectCommand = scGetruntotals;
sdaGetruntotals.Fill(dtGetruntotals);


return dtGetruntotals;
}
catch (Exception ex)
{
MessageBox.Show("Error Retriving totals Details: Processed with this error:" + ex.Message);
return null;
}
}
247455 次浏览

增加 SqlCommand的超时时间。请注意时间在第二位。

// Setting command timeout to 1 second
scGetruntotals.CommandTimeout = 1;

这个命令需要大约2分钟才能返回数据,因为有很多数据

也许吧,坏设计。考虑在这里使用分页。

默认连接时间为30秒,如何增加这个

因为你面临着你的命令的超时,所以你需要增加你的 Sql 命令的超时。您可以像这样在命令中指定它

// Setting command timeout to 2 minutes
scGetruntotals.CommandTimeout = 120;

由于响应需要2分钟,因此可以通过添加以下代码将超时时间增加到3分钟

scGetruntotals.CommandTimeout = 180;

注意 : 参数值以秒为单位。

不建议将 CommandTimeout 设置为120。试着像上面提到的那样使用分页。将 CommandTimeout 设置为30被认为是正常的。除此之外的任何行为都被认为是糟糕的做法,这通常意味着实施工作出了错误的结论。现在,世界正在运行的毫秒方法。

将命令超时设置为2分钟。

 scGetruntotals.CommandTimeout = 120;

但是您可以优化您的存储过程来减少这个时间! 喜欢

  • 移走航线或时间等
  • 使用分页
  • 使用 # temTable 和@variableTable
  • 优化联接表