我尝试使用LINQPad作为SSMS的替代品,但是返回大型结果集需要花费过多的时间。我通常会在几分钟后放弃等待,但如果我不去管它,LINQPad通常会超时,并出现内存不足的错误。
在网格中显示之前,LINQPad是否将整个结果集加载到内存中?它是否能够以块形式返回记录,并随着数据库中可用的结果越来越多,将记录添加到输出网格中——类似于SSMS的工作方式?
从LINQPad表单(http://forum.linqpad.net/discussion/303/is-entire-sql-result-set-loaded-into-memory-before-display)交叉发布(并修改),因为我没有得到回应。
在富文本模式下不应该发生这种情况,因为LINQPad隐式地限制了它获取的数据量(默认情况下为1000行)。经过一些调查,问题似乎是由于ADO中的一个错误。净的SqlDataReader。当您在仅读取部分行之后处置数据读取器时,它会通过枚举所有剩余数据来"清理"读取器。这确实很烦人,所以我正在研究是否有可能检测到这种情况并取消底层命令。
编辑:在最新的测试版中有一个解决办法,所以在富文本模式下,查询现在应该快速完成前1000行。