KB4046745 - FIX: оператор UPDATE завершується помилкою без сповіщення, якщо ви посилаєтеся на неіснуючу функцію розділу в реченні WHERE у SQL Server 2014, 2016 або 2017

Застосовується до
SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2017 Developer SQL Server 2017 Enterprise Core SQL Server 2017 Enterprise SQL Server 2016 Service Pack 1 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 Standard - duplicate (do not use)

Ознаки

Припустімо, що у вас є інструкція UPDATE, що посилається на неіснуючу функцію розділу за допомогою ключового слова $PARTITION в Microsoft SQL Server 2014, 2016 або 2017. Наприклад,

Примітка.

UPDATE TableName SET ColumnName='xyz' WHERE $PARTITION. NonExistingPartitionFunction(ColumnName) = 1

У цій ситуації SQL ServerSQL Server не оновлює та не повертає повідомлення про помилку, яке вказує на те, що об'єкт NonExistingPartitionFunction не існує. Однак, з точки зору користувача, здається, що оператор UPDATE виконується успішно, але насправді він зазнав невдачі.

Причина

Коли виконується пакет, SQL ServerSQL Server може виконувати розпізнавання відкладених імен (DNR). У цьому процесі SQL Server не відразу створює помилку, коли стикається з неіснуючим об'єктом, і очікує, що об'єкт буде створено модулем або пакетом до виконання оператора, який посилається на цей об'єкт. Що стосується функцій розділів, SQL Server не обробляє DNR належним чином.

Додаткові відомості

Докладні відомості про DNR див. в статті «Розпізнавання імен із затримкою».

Спосіб усунення проблеми

Цю проблему вирішено в наведених нижче сукупних оновленнях для SQL ServerSQL Server:

Сукупний пакет оновлень 8 для SQL ServerSQL Server 2016 SP1

Сукупний пакет оновлень 4 для SQL ServerSQL Server 2017

Сукупний пакет оновлень 9 для SQL ServerSQL Server 2014 SP2

Відомості про сукупні оновлення для SQL ServerSQL Server :

Кожне нове сукупне оновлення для SQL Server містить усі виправлення та виправлення системи безпеки, які входили до попереднього сукупного пакета оновлень. Перегляньте останні сукупні оновлення для SQL Server.

Останнє сукупне оновлення для SQL ServerSQL Server 2016

Останнє сукупне оновлення для SQL ServerSQL Server 2017

Останнє сукупне оновлення для SQL ServerSQL Server 2014

Стан

Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".

Посилання

Дізнайтеся, за допомогою яких термінів корпорація Майкрософт описує оновлення програмного забезпечення.