Проблемы
Предположим, что у вас есть инструкция Update , ссылающаяся на несуществующую функцию секционирования, используя ключевое слово $Partition в Microsoft SQL Server 2014, 2016 или 2017. Например
Обновление TableName Set ColumnName= "xyz", где $Partition. NonExistingPartitionFunction (ColumnName) = 1
В этом случае SQL Server не выполняет обновление или возвращает сообщение об ошибке, указывающий на то, что объект NonExistingPartitionFunction не существует. Однако с точки зрения пользователя инструкция Update выполняется успешно, но фактически она завершилась сбоем.
Причина
При выполнении пакета SQL Server может выполнить отложенное разрешение имен (DNR). В этом случае SQL Server не может немедленно вызвать ошибку, если обнаруживает несуществующий объект, и ожидает, что объект будет создан модулем или пакетом перед выполнением инструкции, которая ссылается на этот объект. Для функций секционирования SQL Server не обрабатывает DNR надлежащим образом.
Дополнительная информация
Дополнительные сведения о DNR можно найти в разделе Отложенное разрешение имен.
Решение
Эта проблема исправлена в перечисленных ниже накопительных обновлениях для SQL Server.
Накопительное обновление 8 для SQL Server 2016 с пакетом обновления 1 (SP1)
Накопительное обновление 4 для SQL Server 2017
Накопительное обновление 9 для SQL Server 2014 с пакетом обновления 2 (SP2)
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Последнее накопительное обновление для SQL Server 2016
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Ссылки
Ознакомьтесь с терминологией, которую корпорация Майкрософт использует для описания обновлений программного обеспечения.