MultipleActiveResultSets =真还是多个连接?


85

我有一些C#,其中在连接(ExecuteReader)上创建了一个读取器,然后针对该读取器中的每一行,执行另一个命令(带有ExecuteNonQuery)。在这种情况下,最好MultipleActiveResultSets=True在我的连接上使用还是使用多个连接?

Answers:


98

专门为这种类型的操作添加了多个活动结果集(MARS),这样您不必同时打开两个连接就可以从SqlDataReader中读取并执行其他批处理。

MARS与SQL Server 2005及更高版本兼容。引用MSDN文档:

在引入多个活动结果集(MARS)之前,开发人员必须使用多个连接或服务器端游标来解决某些情况。

有关更多信息,请参见:

MSDN库-MARS概述

读取和更新数据的工作示例:

MSDN库-操纵数据(MARS)向下滚动到“使用MARS读取和更新数据”



0

最好的测试方法是启动SQLServer Profiler,并查看服务器端实际发生的情况。

我的猜测是,由于您使用的是ExecuteNonQuery(),因此不会更好。因此,实际上,您无法处理多个结果。


6
这就是我编写代码时的想法,但是如果我没有MultipleActiveResultSets = True,那么我仍然会收到“与此命令相关联的打开的DataReader,必须先关闭它”。ExecuteNonQuery异常。
Sprintstar,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.