C# 使用SqlDataReader查询大量数据,需要中途关闭时报超时异常

该表有大约1千万数据,在查询中途尝试取消时,无论是Abort相关线程,还是线程内部主动关闭SqlDataReader,总是报超时异常。

后来查询 http://msdn.microsoft.com/zh-cn/library/vstudio/system.data.sqlclient.sqldatareader.close.aspx ,发现有这么一句话

Close 方法填写输出参数的值、返回值和 RecordsAffected,从而增加了关闭用于处理大型或复杂查询的 SqlDataReader 所用的时间。 如果返回值和查询影响的记录的数量不重要,则可以在调用 Close 方法前调用关联的 SqlCommand 对象的 Cancel 方法,从而减少关闭 SqlDataReader 所需的时间。

按照这个提示,修改代码,在调用SqlDataReader的Close方法前先调用相关联的SqlCommand的Cancel方法。

最后结果让我泪流满面,秒关。

 

原文地址:https://www.cnblogs.com/xyz0835/p/3379676.html