Проблемы
Рассмотрим следующий сценарий.
-
В Microsoft SQL Server 2016 используется база данных с уровнем совместимости 130.
-
Вы выполняете запрос, который обращается к индексу хранилища столбцов и индексу хранилища строк или куче и включает предикат фильтра (предложение WHERE).
В этом сценарии SQL Server не сможет отправить предикат фильтра ближе к оператору источника данных (сканирование таблиц или индексов или поиск). Это может привести к неоптимальной производительности запросов.
Кроме того, если запрос использует выражение (например, преобразование типа), где его правильность зависит от отфильтрованных данных (например, столбец таблицы char преобразуется в int, но только подмножество значений содержит допустимое представление int, и это подмножество определяется предикатом фильтра), запрос может завершиться ошибкой преобразования данных, которая выглядит следующим образом:
Ошибка msg 245, level 16, State 1, Line 20
Conversion при преобразовании значения varchar "0.5" в тип данных int.
Msg 8114, Level 16, State 5, Line 34
Error converting data type varchar to bigint.
Решение
Эта проблема устранена в следующем накопительном обновлении для SQL Server:
Накопительный пакет обновления 2 для SQL Server 2016 с пакетом обновления 1 (SP1)
Примечание. Чтобы это исправление войти в силу, необходимо включить исправления оптимизатора запросов.
Вы можете включить исправления оптимизатора запросов, используя один из следующих параметров: флаг трассировки 4199, параметр конфигурации области базы данных QUERY_OPTIMIZER_HOTFIXES=ON (доступно в SQL Server 2016 и более поздних версиях) или USE_HINT параметр запроса "ENABLE_QUERY_OPTIMIZER_HOTFIXES" (доступен в SQL Server 2016 с пакетом обновления 1 (SP1) и более поздних версий.
Каждое новое накопительное обновление для SQL Server содержит все исправления и все исправления для системы безопасности, которые были включены в предыдущее накопительное обновление. Ознакомьтесь с последними накопительными обновлениями для SQL Server:
Последнее накопительное обновление для SQL Server 2016 г.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Ссылки
Сведения о терминологии, которую корпорация Майкрософт использует для описания обновлений программного обеспечения.