KB2894305. ИСПРАВЛЕНИЕ. Неоптимальный план выполнения создается при выполнении запроса в SQL Server 2012 или SQL Server 2014 г.

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

Проблема

При выполнении запроса в Microsoft SQL Server 2012 или SQL Server 2014 и выполнении следующих условий в SQL Server 2012 г. создается неоптимальный план выполнения:

  • Запрос содержит инструкции Case, When, Then и Else.
  • Оператор When имеет константное условие, которое принимает значение false.
  • Инструкция Then содержит предложение Select.

Заметки

  • В плане выполнения оператор Then вычисляется и сравнивается с isFalseOrNull(0). Однако оператор When всегда имеет значение false.
  • Эта проблема не возникает в Microsoft SQL Server 2008 R2

      

Решение

Эта проблема была исправлена в следующем накопительном обновлении SQL Server.

Накопительный пакет обновления 1 для SQL Server 2014 г. /ru-ru/help/2931693

Накопительный пакет обновления 7 для SQL Server 2012 с пакетом обновления 1 (SP1) /ru-ru/help/2894115

Сведения о накопительных обновлениях для SQL Server

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

      

Состояние

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