SqlCommand.ExecuteReader在Close时传输数据,即使没有一个Read
本文关键字:有一个 Read 数据 ExecuteReader Close 传输 SqlCommand | 更新日期: 2023-09-27 17:55:04
给定一个通过TCP的数据库连接
当我执行以下代码时
然后我在任务管理器中看到SQL Server总是通过网络发送查询的数据(当Reader关闭时)-即使我们不读取/获取它们!
var command = new SqlCommand("SELECT TOP 100 Stamp, Blob", connection) { CommandTimeout = commandTimeout };
using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.CloseConnection)
{
// even if we do not read anything here
//while (reader.Read())
//{
//var values = reader.GetValues();
//if (check condition on values)
// break;
//}
}
正常吗?原因是什么?有解决方案吗?
我们不想下载查询返回的所有数据
我相信TDS不具备跳过结果的能力。您不能告诉服务器不发送它们。相反,客户端必须在它们传入时跳过它们。
以下是一些选项:
- 接受这种行为
- 取消
- 关闭连接
- 修改查询,不返回您不需要的结果(为什么不能这样做?似乎是显而易见的解决方案。)