有人知道MARS(多个活动结果集)有什么缺点吗?有谁知道为什么应该避免使用MARS的任何原因,例如游标比MARS更有用的情况。
Answers:
显然,至少存在两个已知的(潜在的)缺陷(来自(1)团队博客):
显然,这对于未设计为与支持MARS的设计运行的任何传统系统都可能引起潜在的问题- “经过优化以在非MARS领域中运行的现有代码,在未经过MARS修改的情况下运行时,可能会出现轻微的性能下降”。
“借助MARS,您可以将多个多语句批处理发送到服务器。服务器将交错执行此类批处理,这意味着,例如,如果批处理通过SET或USE语句更改服务器状态,或使用TSQL事务管理语句(BEGIN TRAN,COMMIT,ROLLBACK),则您和服务器都可能会感到困惑关于您的实际意图。”
我还没有尝试过启用MARS的设计,但是在我当前的项目中,我已经非常接近这样做了。我们在竞争性查询(有时是依赖项)的查询操作中存在一个小问题(例如,从活动记录集正在执行的同一数据库中延迟加载配置数据)。
[(1) http://blogs.msdn.com/sqlnativeclient/archive/2006/09/27/774290.aspx ]
[(2)http://msdn.microsoft.com/en-us/library/ms131686.aspx ]
取决于什么?没有真正的缺点。
他们不支持事务保存点。但我不认为这是不利的。