之前我从未使用多个活动结果集,但听起来它会通过允许多个连接共享上下文来帮助我解决问题。我的问题是,是否有一种方法可以指定哪些连接共享上下文。根据文档sp_getbindtoken(该技术的旧版本),您可以指定标记来标识每个会话,并确定哪些连接共享每个会话。我没有看到一种方法来指定哪些连接与MARS共享哪些会话。
听起来只有一个共享上下文,你的连接可以通过指定MARS = true或者不是它的一部分而成为它的一部分。我想有3个不同的会话,并以编程方式确定哪些连接彼此共享上下文。这可能吗?
更新 我想提供一些关于我的问题的背景知识,以了解我的MARS理论是否会有所帮助。
我的系统运行良好,但有一个更新查询除外。我从这一个查询中抛出了很多死锁错误。根据我读到的有关sp_getbindtoken的内容,这个较旧的功能可用于强制多个客户端进入单个管道,因此查询会串行发生,这会阻止两个查询相互死锁。 MARS是sp_getbindtoken的替代品,所以我希望它能支持相同的功能。我只想在执行此更新查询时使用MARS,并让我的系统的其余部分继续使用不使用MARS的连接字符串。此外,如果我可以为MARS查询指定上下文,它将允许我沿着正在更新的表上的分区拆分更新查询。我之前从未使用过sp_getbindtoken或MARS,所以我对这些技术的所有假设都是错误的,但如果我正确地阅读文档,那么解决我的死锁问题将会有很长的路要走。
答案 0 :(得分:2)
“允许多个连接共享上下文”
不,你错了。 MARS允许您在单个连接中检索多个结果集,例如:
见:
https://msdn.microsoft.com/en-us/library/yf1a7f4f(v=vs.110).aspx
您想要的不是支持的方案。