C# 同一.NET项目但不同计算机上SqlReader执行时间的差异

C# 同一.NET项目但不同计算机上SqlReader执行时间的差异,c#,asp.net,sql-server,ado.net,C#,Asp.net,Sql Server,Ado.net,我正在从事一个团队项目,该项目从MSSQL服务器读取数据。我们正在使用异步调用来获取数据 SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString); SqlCommand cmdData = new SqlCommand("get_report", conn); cmdData.C

我正在从事一个团队项目,该项目从MSSQL服务器读取数据。我们正在使用异步调用来获取数据

SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
SqlCommand cmdData = new SqlCommand("get_report", conn);
cmdData.CommandType = CommandType.StoredProcedure;

conn.Open();
IAsyncResult asyResult = cmdData.BeginExecuteReader();

try
{
    SqlDataReader drResult = cmdData.EndExecuteReader(asyResult);
    table.Load(drResult);
}
catch (SqlException ex)
{
    throw;
}
项目本身使用TFS源代码管理和门控签入,我们已经验证了两台计算机运行的项目版本完全相同。我们还使用相同的用户登录名,并使用完全相同的参数执行存储过程(为简洁起见,未列出这些参数)

在SQLServerManagementStudio下,存储过程本身需要1:54才能返回42000行。在Windows7x86上运行时,.NET代码的执行时间与在SSM上的执行时间大致相同,上面的代码片段执行得非常完美。但是,在我运行Windows 7 x64的计算机上,上面的代码在0:40标记处的
EndExecuteReader
行遇到错误。返回的错误为“操作无效。连接已关闭。”

添加
cmdData.CommandTimeout=600
允许继续执行,但返回数据需要4分钟以上,我们无法解释可能发生的情况

我们考虑了一些问题:我的计算机已安装.NET 4.5 Framework,正在针对32位程序集运行64位操作系统,可能正在本地项目文件中存储未与TFS服务器同步的信息。但我们似乎无法确切地找出究竟是什么原因导致了时间上的差异


有没有人知道为什么会存在这种差异,或者可以给我一些建议,告诉我应该从哪里找出问题?

当一次命令执行多次调用EndExecuteReader时,收到无效的操作错误,或者该方法与其执行方法不匹配。

您能提供您得到的确切错误消息吗?@pdriegen是的,我意识到我在重新阅读后忘记了添加它。它现在在那里,我得到了“无效操作。连接已关闭”。您的Sql Server和应用程序是否在同一台第一台计算机上,并从第二台计算机远程访问数据库。@Romil都在访问远程Sql Server我有一些模糊的东西。。。您是否进入SSMS,右键单击服务器名称,选择属性,然后在“处理器”下单击相应的框?但是,在完全相同的项目中,一台计算机运行代码正常,而另一台计算机运行代码正常,但可以通过更改CommandTimeout来修复?如果相同的代码在一个环境中成功运行,而不是在另一个环境中成功运行,似乎不太可能出现编码错误。