KB4046745 – КОРЕКЦИЯ: Командата 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 Server не извършва актуализация и не връща съобщение за грешка, за да посочи, че обектът NonExistingPartitionFunction не съществува. От потребителска гледна точка обаче изглежда, че командата UPDATE се изпълнява успешно, но всъщност е неуспешна.

Причина

Когато изпълните партида, SQL Server може да извърши отложеното преобразуване на имена (DNR). В този процес SQL Server не създава незабавно грешка, когато се натъкне на несъществуващ обект, и очаква, че обектът ще бъде създаден от модула или партидата преди изпълнението на командата, която препраща към този обект. За функциите на дялове SQL Server не обработва DNR правилно.

Повече информация

За повече информация относно DNR вижте "Отложено преобразуване на имена".

Решение

Този проблем е решен в следните кумулативни актуализации за SQL Server:

Сборна актуализация 8 за SQL Server 2016 SP1

Сборна актуализация 4 за SQL Server 2017

Сборна актуализация 9 за SQL Server 2014 SP2

За кумулативните актуализации за SQL Server:

Всяка нова кумулативна актуализация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били включени в предишната кумулативна актуализация. Прегледайте последните кумулативни актуализации за SQL Server:

Последна сборна актуализация за SQL Server 2016

Последна сборна актуализация за SQL Server 2017

Последна сборна актуализация за SQL Server 2014

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.

Справки

Научете повече относно терминологията, която Microsoft използва за описване на актуализациите на софтуера.