增加SQL命令的命令超时

时间:2013-08-26 08:48:37

标签: c# sql ado.net connection-timeout

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

5 个答案:

答案 0 :(得分:104)

  

由于存在大量数据,它需要此命令大约2分钟才能返回数据

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

  

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

当你面临命令时,你需要增加sql command的时间。您可以在命令中指定它,如

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

答案 1 :(得分:20)

添加SqlCommand的超时时间。请注意时间是秒。

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

答案 2 :(得分:2)

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

scGetruntotals.CommandTimeout = 180;

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

答案 3 :(得分:0)

不建议将CommandTimeout设置为120。尝试使用如上所述的分页。将CommandTimeout设置为30被视为正常。除此之外的任何事情都是考虑糟糕的方法,通常会导致实施方面出现问题。现在世界正在使用MiliSeconds方法。

答案 4 :(得分:0)

将命令超时设置为2分钟

 scGetruntotals.CommandTimeout = 120;

但是您可以优化存储过程以减少时间! 像

  • 删除课程或课程等
  • 使用分页
  • 使用#temptable
  • 优化联接表