MultipleActiveResultSets =真或多个连接?

时间:2009-02-04 11:05:43

标签: c# .net sql-server sql-server-2005 ado.net

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

3 个答案:

答案 0 :(得分:85)

为此类操作专门添加了多个活动结果集(MARS),因此您无需同时打开两个连接即可从SqlDataReader读取并执行其他批处理。

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

  

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

有关详细信息,请参阅:

  

MSDN Library - MARS Overview

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

  

MSDN Library - Manipulating Data (MARS)向下滚动到“使用MARS阅读和更新数据”

答案 1 :(得分:17)

据我所知,MARS被添加的原因,所以我认为你应该使用它。

答案 2 :(得分:0)

测试这个的最好方法是激活SQLServer Profiler,看看服务器端真正发生了什么。

我的猜测是,因为你使用的是ExecuteNonQuery(),所以它不会更好。因此,事实上,您不会使用多个结果。