我有一个非常奇怪的情况。当我从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是本地的,因此不是数据传输的问题
答案 0 :(得分:0)
您不仅要测量返回第一条记录的时间,还要填写数据适配器。根据返回的数据量以及元数据的复杂程度,这可能需要相当长的时间。
尝试暂时更改代码以简单地迭代结果
IDataReader reader = cmd.ExecuteReader();
while (reader.Read());
而不是填充数据适配器。看看那个时间比较。
另外,如果抛出异常,您将不会丢弃您的IDisposable资源(cmd,con)。使用using
关键字确保正确的资源清理。