DBA 的 SqlDataAdapter 与 SqlDataReader

Pet*_*ter 2 sql-server ado.net application-design data-tier-application sql-server-2016

与开发人员谈论SqlDataAdaptervs的使用SqlDataReader并阅读此内容:https : //stackoverflow.com/questions/1676753/sqldataadapter-vs-sqldatareader

几乎没有解释从 切换SqlDataAdapter到对 SQL Server 的影响SqlDataReader

我知道SqlDataReader可能会增加连接对 SQL Server 开放的时间长度,这在有效使用池连接时肯定是一个问题。

除此之外,使用SqlDataReader而不是对 SQL Server 有什么影响SqlDataAdapter?有没有人观察到此更改对 SQL Server 的影响?

Sco*_*red 6

根据我的经验,除了客户端计算机上的SqlDataAdapter.netSELECT * INTO #TEMP之外,我认为它有点像 .net #TEMP。从 SQL Server 读取整个结果集,不再需要该连接。从 SQL Server 的角度来看,查询进入、运行和退出。从客户端的角度来看,整个结果集被加载到客户端计算机的内存中。在读取大量数据时,这可能会带来极大的问题。

另一方面,我认为SqlDataReader这是cursor一种打开 SQL Server 连接并SqlDataReader一次提供一行的机制。应用程序可能会在每次读取之间执行大量工作,这可能会导致与 SQL Server 的连接在很长一段时间内保持打开状态。这种技术可以允许应用程序处理大型结果集,而不必在客户端计算机上缓存整个数据集。