KB3201554 - ИСПРАВЛЕНО: Долгое время компиляции для запроса, содержащего много разных операторов в SQL Server 2016

Применяется к
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Express - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Web - duplicate (do not use)

Проблема

Логика оценки мощности, известная как оценщик количества (CE), была переработана в SQL Server 2014 (уровни совместимости 120) и SQL Server 2016 (уровни совместимости 130) для повышения качества планов запросов.

Однако при компиляции сложного запроса, содержащего множество соединений с помощью операторов DISTINCT или GROUP BY, компиляция может занять гораздо больше времени, чем ожидалось.

Решение

Это обновление, устраняющее эту проблему, включено в пакет обновления 1 для SQL Server 2016.

Примечание. После установки этого обновления необходимо установить флаг трассировки 4199, чтобы включить исправление. Сведения о том, как установить флаг трассировки 4199, см. в разделе "Флаги трассировки (Transact-SQL) " на сайте MSDN.

Сведения о сборках SQL Server 2016

Каждая новая сборка SQL Server 2016 содержит все исправления и исправления безопасности, которые были внесены в предыдущую сборку. Рекомендуется установить последнюю сборку SQL Server 2016.

Временное решение

Для временного решения этой проблемы используйте один из следующих способов:

  • Используйте флаг трассировки 9481, чтобы установить для модели оценки кратности оптимизатора запросов SQL Server 2012 или более раннюю версию.
  • Измените уровень совместимости базы данных на SQL Server 2012 (110) или более раннюю версию.

Состояние

Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».

Ссылки

Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.