我有一个小问题,希望有人能给我一些建议。我正在运行一个 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;
}
}
由于数据较多,此命令大约需要 2 分钟才能返回数据
可能是糟糕的设计。考虑在这里使用分页。
默认连接时间是30秒,如何增加这个
由于您的命令面临超时,因此您需要增加 sql 命令的超时。您可以像这样在命令中指定它
// Setting command timeout to 2 minutes
scGetruntotals.CommandTimeout = 120;
向您的
SqlCommand
添加命令超时。请注意时间以秒为单位。
// Setting command timeout to 1 second
scGetruntotals.CommandTimeout = 1;
由于需要 2 分钟才能响应,因此您可以通过添加以下代码将超时时间增加到 3 分钟
scGetruntotals.CommandTimeout = 180;
注意:参数值以秒为单位。
将命令超时设置为 2 分钟。
scGetruntotals.CommandTimeout = 120;
但是您可以优化存储过程以减少时间! 喜欢
@davmos 你遇到了什么错误?
不建议将 CommandTimeout 设置为 120。尝试使用上面提到的分页。将 CommandTimeout 设置为 30 被认为是正常的。除此之外的任何事情都被认为是不好的方法,并且通常会导致实施出现问题。现在世界正在以毫秒方式运行。