Недостатки MARS (несколько активных наборов результатов)?

Кто-нибудь знает какие-либо недостатки MARS (Множественные активные результаты)? Кто-нибудь знает о какой-либо причине, почему следует избегать использования MARS, например, случаи, когда курсоры более полезны, чем MARS.

Ответ 1

По-видимому, по крайней мере два известных (потенциальных) недостатка (из этого (1) Блог команды):

  • Очевидно, что это может вызвать потенциальные проблемы для любых устаревших систем, которые не предназначены для работы с проектом с поддержкой MARS. "Существующий код, оптимизированный для работы в мире, отличном от MARS, может показывать небольшое снижение производительности при запуске un -модифицировано с помощью MARS"

  • "С помощью 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

Ответ 2

  • Требуется немного больше ресурсов сервера, чем одно соединение за раз.
  • Необходимо запустить SQL Server 2005 или более позднюю версию. Таким образом, это может быть проблемой в устаревшей среде (ack!).

Ответ 3

в зависимости от того, что? нет реальных недостатков.

они не поддерживают точки сохранения транзакций. но я не считаю это недостатком.