1

我正在尝试使用 LINQPad 作为 SSMS 替代品,但返回大型结果集需要花费大量时间。我通常会在几分钟后放弃等待,但如果我不管它,LINQPad 经常会因内存不足错误而超时。

LINQPad 是否在将整个结果集显示在网格中之前将其加载到内存中?它是否能够以块的形式返回记录,在数据库中获得更多结果时将记录添加到输出网格中——类似于 SSMS 的工作方式?

我没有从 LINQPad 表单(http://forum.linqpad.net/discussion/303/is-entire-sql-result-set-loaded-into-memory-before-display)交叉发布(和修订)那里有回应。

4

1 回答 1

1

这不应该在富文本模式下发生,因为 LINQPad 隐式限制了它获取的数据量(默认情况下,1000 行)。经过一番调查,问题似乎是由于 ADO.NET 的 SqlDataReader 中的错误造成的。当您在仅读取部分行后处置数据读取器时,它会通过枚举所有剩余数据来“清理”读取器。这当然很烦人,所以我正在研究是否有可能检测到这种情况并取消底层命令。

编辑:在最新的测试版中有一个解决方法,所以在富文本模式下,查询现在应该快速完成前 1000 行。

于 2013-06-20T02:22:13.293 回答