有人知道 MARS(多活动结果集)有什么缺点吗? 有谁知道为什么应该避免使用 MARS 的任何原因,例如光标比 MARS 更有用的情况。
显然至少有两个已知(潜在)缺点(来自此(1)团队博客):
显然,这可能会给任何未设计为针对支持 MARS 的设计运行的遗留系统带来潜在问题 - “针对在非 MARS 世界中运行而优化的现有代码在未经修改的情况下运行时可能会出现轻微的性能下降火星”
“使用 MARS,您可以向服务器发送多个多语句批次。服务器将交错执行此类批处理,这意味着如果批处理通过 SET 或 USE 语句更改服务器状态,或者使用 TSQL 事务管理语句(BEGIN TRAN、COMMIT、ROLLBACK),您和服务器都会感到困惑关于你的真实意图是什么。”
我还没有尝试启用 MARS 的设计,但在我当前的项目中我已经非常接近这样做了。 我们在竞争(有时是依赖)查询操作方面遇到了一个小问题(例如从活动记录集正在执行的同一数据库中延迟加载配置数据)。
MSDN 网站上有更多信息(2) 这里
[ (1) https://web.archive.org/web/20190911155929/https://blogs.msdn.microsoft.com/sqlnativeclient/2006/09/27/using-mars-with-sql-native-客户/]
[ (2) http://msdn.microsoft.com/en-us/library/ms131686.aspx ]
取决于什么?没有真正的缺点。
它们不支持事务保存点。但我不认为这是一个缺点。