如何检测当前连接上MARS是否处于活动状态?

时间:2011-11-05 09:32:18

标签: .net sql-server tsql

我想检测当前连接上是否有MARS(多个活动结果集)处于活动状态,以便检查需要MARS支持的函数中的配置错误。

使用TSQL命令或.NET SQL Server Native Client api方法。

2 个答案:

答案 0 :(得分:3)

您可以检查连接ConnectionString属性是否存在MultipleActiveResultSets属性,如果存在,请确保将其设置为true。

根据您的代码用法,您还可以检查SqlConnection.ServerVersion属性以检查MARS支持。主要数字应为> = 9.(SQL Server 2005及更高版本)。如果您的代码用于不同的SQL服务器版本,这将非常有用。

SqlConnectionStringBuilder也可以反向使用(可能是一个奇怪的想法),它有一个MultipleActiveResultSets属性。

答案 1 :(得分:1)

如果检查连接字符串(最好的选项,IMO)没有吸引力...可能故意欺骗需要MARS的东西,例如打开两行的数据读取器,读取其中一行,和(不关闭阅读器)请求另一个基于读者的查询。

请注意,缓冲可能会影响这一点,但值得一试......