Проблемы
При выполнении запроса в Microsoft SQL Server 2012 или SQL Server 2014 и указанных ниже условиях в SQL Server 2012 генерируется промежуточный план выполнения.
-
Запрос состоит из оператора case, when, thenи else .
-
Оператор " Если " имеет постоянное условие, которое возвращает значение "ложь".
-
Оператор then включает в себя предложение SELECT .
Примечания.
-
В плане выполнения оператор then вычисляется и сравнивается с isFalseOrNull(0). Однако оператор " Если " всегда возвращает значение "ложь".
-
Эта проблема не возникает в Microsoft SQL Server 2008 R2
Решение
Эта проблема впервые устранена в следующем накопительном обновлении SQL Server.
Накопительное обновление 1 для SQL Server 2014 /en-us/help/2931693
Накопительное обновление 7 для SQL Server 2012 с пакетом обновления 1 (SP1) /en-us/help/2894115
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".