我有一个SQL CLR触发器,其中有许多SqlDataReader
个调用(除其他外),在生产系统中用户遇到错误,如
在执行用户定义的例程或聚合期间发生.NET Framework错误" MyTrigger":
System.InvalidOperationException:已经有一个与此命令关联的打开的DataReader,必须先关闭它 System.InvalidOperationException:
在
System.Data.SqlClient.SqlInternalConnectionSmi.ValidateConnectionForExecute(SqlCommand命令)
...
然而,我无法在我的测试环境中重现这一点。我正在考虑设置MutltipleActiveResultSets=true
,但当然没有在CLR触发器中定义的连接字符串(或者是......) - 所以可以在这里的某处将MARS
设置为true,或者我是否需要继续寻找替代解决方案?
答案 0 :(得分:1)
如果指定进程内上下文连接,则为no,则无法启用MARS。记录了这一限制。
如果您需要/需要MARS连接,则需要使用常规/外部连接。这将需要将大会设置为EXTERNAL_ACCESS
。这也意味着您没有“正在进行”工作,因此无法访问正在执行触发器的会话。