Pet*_*ter 2 sql-server ado.net application-design data-tier-application sql-server-2016
与开发人员谈论SqlDataAdapter
vs的使用SqlDataReader
并阅读此内容:https : //stackoverflow.com/questions/1676753/sqldataadapter-vs-sqldatareader
几乎没有解释从 切换SqlDataAdapter
到对 SQL Server 的影响SqlDataReader
。
我知道SqlDataReader
可能会增加连接对 SQL Server 开放的时间长度,这在有效使用池连接时肯定是一个问题。
除此之外,使用SqlDataReader
而不是对 SQL Server 有什么影响SqlDataAdapter
?有没有人观察到此更改对 SQL Server 的影响?
根据我的经验,除了客户端计算机上的SqlDataAdapter
.netSELECT * INTO #TEMP
之外,我认为它有点像 .net #TEMP
。从 SQL Server 读取整个结果集,不再需要该连接。从 SQL Server 的角度来看,查询进入、运行和退出。从客户端的角度来看,整个结果集被加载到客户端计算机的内存中。在读取大量数据时,这可能会带来极大的问题。
另一方面,我认为SqlDataReader
这是cursor
一种打开 SQL Server 连接并SqlDataReader
一次提供一行的机制。应用程序可能会在每次读取之间执行大量工作,这可能会导致与 SQL Server 的连接在很长一段时间内保持打开状态。这种技术可以允许应用程序处理大型结果集,而不必在客户端计算机上缓存整个数据集。