KB4046745 - CORRECTIF : l’instruction UPDATE échoue en mode silencieux lorsque vous référencez une fonction de partition inexistante dans la clause WHERE dans SQL Server 2014, 2016 ou 2017

S’applique à
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)

Symptômes

Supposons que vous ayez une instruction UPDATE qui fait référence à une fonction de partition inexistante à l’aide de l’mot clé $PARTITION dans Microsoft SQL Server 2014, 2016 ou 2017. Par exemple,

Remarque

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

Dans ce cas, SQL Server n’effectue pas de mise à jour ou ne retourne pas de message d’erreur pour indiquer que l’objet NonExistingPartitionFunction n’existe pas. Toutefois, du point de vue de l’utilisateur, il semble que l’instruction UPDATE soit exécutée avec succès, mais qu’en réalité elle a échoué.

Cause

Lorsque vous exécutez un lot, SQL Server peut effectuer la résolution de noms différée (DNR). Dans ce processus, SQL Server ne génère pas immédiatement d’erreur lorsqu’il rencontre un objet inexistant, et il s’attend à ce que l’objet soit créé par le module ou le lot avant l’exécution de l’instruction qui fait référence à cet objet. Pour les fonctions de partition, SQL Server ne gère pas correctement la DNR.

Informations supplémentaires

Pour plus d’informations sur DNR, consultez Résolution de noms différée.

Résolution

Ce problème est résolu dans les mises à jour cumulatives suivantes pour SQL Server :

Mise à jour cumulative 8 pour SQL Server 2016 SP1

Mise à jour cumulative 4 pour SQL Server 2017

Mise à jour cumulative 9 pour SQL Server 2014 SP2

À propos des mises à jour cumulatives pour SQL Server :

Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :

Dernière mise à jour cumulative pour SQL Server 2016

Dernière mise à jour cumulative pour SQL Server 2017

Dernière mise à jour cumulative pour SQL Server 2014

État

Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».

Références

En savoir plus à propos de la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.