查询从.net客户端比从查询窗口花费更多时间

时间:2015-10-06 20:52:38

标签: c# sql-server

我有一个非常奇怪的情况。当我从SQL Management studio运行存储过程时,它按预期工作,只需1秒钟即可返回信息。如果我在IIS上使用.net方法进行完全相同的调用,则需要一分多钟才能完成。我运行了一个跟踪,它冻结了对存储过程的调用

GetConConsultaCuenta_Mov' 20150901 00:00:00',' 20150930 00:00:00',4896,168123,0,1,0,0,0,' 0'

我使用非常简单的代码来填充数据

SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

    SqlCommand cmd = new SqlCommand(Sql, con);
    cmd.CommandTimeout = 5000000;
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();

    con.Open();        
    da.Fill(ds);

    cmd.Dispose();
    con.Close();
    da.Dispose();
    con.Dispose();

IIS是本地的,因此不是数据传输的问题

1 个答案:

答案 0 :(得分:0)

您不仅要测量返回第一条记录的时间,还要填写数据适配器。根据返回的数据量以及元数据的复杂程度,这可能需要相当长的时间。

尝试暂时更改代码以简单地迭代结果

IDataReader reader = cmd.ExecuteReader();
while (reader.Read());

而不是填充数据适配器。看看那个时间比较。

另外,如果抛出异常,您将不会丢弃您的IDisposable资源(cmd,con)。使用using关键字确保正确的资源清理。