71

我有一个小问题,希望有人能给我一些建议。我正在运行一个 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;
    }
}
4

5 回答 5

125

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

可能,糟糕的设计。考虑在这里使用分页。

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

由于您的命令面临超时,因此您需要增加sql 命令的超时时间。您可以像这样在命令中指定它

// Setting command timeout to 2 minutes
scGetruntotals.CommandTimeout = 120;
于 2013-08-26T08:54:51.830 回答
24

添加您的SqlCommand. 请注意时间以秒为单位。

// Setting command timeout to 1 second
scGetruntotals.CommandTimeout = 1;
于 2013-08-26T08:54:15.097 回答
2

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

scGetruntotals.CommandTimeout = 180;

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

于 2017-04-18T13:03:06.487 回答
1

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

 scGetruntotals.CommandTimeout = 120;

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

  • 删除 courser 或 while 等
  • 使用分页
  • 使用 #tempTable 和 @variableTable
  • 优化连接表
于 2019-05-23T07:25:36.737 回答
-4

不建议将 CommandTimeout 设置为 120。尝试使用上面提到的分页。将 CommandTimeout 设置为 30 被认为是正常的。除此之外的任何事情都被认为是不好的方法,并且通常会得出实施有问题的结论。现在世界正在运行 MiliSeconds 方法。

于 2017-12-01T04:48:36.157 回答