我想检测MARS(多活动结果集)是否在当前连接上处于活动状态,以便检查需要MARS支持的功能中的错误配置。如何检测MARS是否在当前连接上处于活动状态?
使用TSQL命令或.NET SQL Server Native Client API方法。
我想检测MARS(多活动结果集)是否在当前连接上处于活动状态,以便检查需要MARS支持的功能中的错误配置。如何检测MARS是否在当前连接上处于活动状态?
使用TSQL命令或.NET SQL Server Native Client API方法。
您可以检查ConnectionString属性是否存在MultipleActiveResultSets属性,如果存在,请确保将其设置为true。
根据您的代码使用情况,您还可以检查SqlConnection.ServerVersion属性以检查MARS支持。主数应该大于等于9.(SQL Server 2005及更高版本)。如果您的代码在不同的SQL服务器版本上使用,这将非常有用。
SqlConnectionStringBuilder也可以用于反向(也许是一个奇怪的想法),它有一个MultipleActiveResultSets属性。
如果检查连接字符串(最佳选项,IMO)没有吸引力......也许故意欺骗需要MARS的东西,例如打开两行数据读取器,读取其中一行,然后(不关闭阅读器)请求另一个基于阅读器的查询。
请注意,缓冲可能会影响到这一点,但值得一试...
好的手动解析:)任何其他的想法? – Softlion
@Softion不是手动的 - 你可以使用SqlConnectionStringBuilder将它解析成键/值对 –
你只需检查MultipleActiveResultSets键 –