MARS(多个活动结果集)的缺点?

Sam*_*sha 77 sql-server-2005 sql-server-mars

有谁知道MARS(多个活动结果集)的任何缺点?有没有人知道为什么人们应该避免使用MARS,比如游标比MARS更有用的情况.

Rob*_*obS 57

显然至少有两个已知的(潜在的)缺点(来自这个(1)团队博客):

  1. 显然,这可能会导致任何未设计为针对支持MARS的设计运行的遗留系统出现潜在问题 - "在非MARS世界中运行的现有代码在使用MARS未经修改运行时可能会略微降低性能"

  2. "使用MARS,您可以向服务器发送多个多语句批处理.服务器将交错执行此类批处理,这意味着如果批处理通过SET或USE语句更改服务器状态,或者使用TSQL事务管理语句(BEGIN TRAN,COMMIT,ROLLBACK),则您和服务器都会混淆关于你的实际意图."

我还没有尝试过支持MARS的设计,但我现在非常接近我目前的项目.我们在竞争(有时是依赖)查询操作方面存在轻微问题(例如,延迟加载配置数据来自活动记录集正在执行的同一数据库).

这里有关于MSDN站点(2)的更多信息

[(1) http://blogs.msdn.com/sqlnativeclient/archive/2006/09/27/774290.aspx ]
[(2)http://msdn.microsoft.com/en-us/library/ms131686.aspx ]

  • 在应用@RobS优秀解决方案之前,我首先阅读本文,以确保您无法通过以下解决方案解决此问题:http://devproconnections.com/development/solving-net-scalability-problem或添加.ToList( )到你的数据库调用结束,这解决了我的问题.顺便说一下,感谢RobS提供了很好的建议,MARS将来会派上用场.:) (3认同)

Dav*_*kle 6

  • 它比一次连接一个连接需要更多的服务器资源.
  • 您必须运行SQL Server 2005或更高版本.因此,这可能是遗留(ack!)环境中的问题.

  • "稍微多一点的服务器资源"多少钱?你能用内存或CPU来估算它吗?我对此感兴趣主要是因为我在Azure环境中,资源与服务器的成本成比例. (16认同)
  • @MathiasLykkegaardLorenzen 你找到问题的答案了吗? (2认同)