Symptômes
Supposez que vous disposez d’une requête qui effectue des opérations de type chaîne (par exemple, concaténation) sur des colonnes CHAR ou VARCHAR dans Microsoft SQL Server 2014, 2016 et 2017. Prenons l’exemple du scénario suivant :
-
Vous concaténez des colonnes avec différents classements qui leur sont attribués.
-
Ces classements ne sont pas compatibles entre eux. Par exemple, vous essayez de concaténer une colonne assemblées en tant que Latin1_General_CI_AI de Latin1_General_BIN.
-
Le résultat final de la concaténation est attribué à un assemblage spécifique (y compris « database_default ») dans le cadre de la résolution des conflits de classement.
Dans ce scénario, SQL Server peut retourner une assertion de vente au détail indiquant « une comparaison non valide en raison de l’absence d’assemblage » et vous pouvez recevoir des messages d’erreur similaires à ce qui suit :
Emplacement : typinfo. cpp :LineNumber Expression : false SPID : SPID ID de processus : ProcessID Description : comparaison non valide en raison de l’absence d’assemblage.
MSG 3624, niveau 20, état 1, ligne LineNumber La vérification de l’assertion du système a échoué. Pour plus d’informations, consultez le journal des erreurs SQL Server. En règle générale, un échec d’assertion est lié à un bogue logiciel ou à des données endommagées. Pour vérifier la corruption de la base de données, envisagez d’exécuter DBCC CHECKDB. Si vous avez accepté d’envoyer des vidages à Microsoft lors de l’installation, un mini-vidage sera envoyé à Microsoft. Il est possible qu’une mise à jour soit disponible à partir de Microsoft dans le Service Pack le plus récent ou dans un correctif du support technique.
MSG 596, niveau 21, état 1, ligne LineNumber Ne peut pas continuer l’exécution, car la session est en état d’arrêt.
MSG 0, niveau 20, état 0, ligne LineNumber
Une erreur sérieuse s’est produite sur la commande actuelle. Les résultats éventuels doivent être supprimés.
Cause
Lors de l’étape d’optimisation de la requête, SQL Server tente de calculer les cardinales sur les résultats intermédiaires de diverses phases de la requête, par exemple la concaténation. Étant donné que la résolution des conflits de classement intervient en tout lieu, l’optimiseur de requête risque de ne pas être consciente de celle-ci et tente d’effectuer le calcul de la cardinalité de concaténation sur une entrée avec un assemblage en conflit.
Résolution
Ce problème a été résolu dans les mises à jour cumulatives de SQL Server suivantes :
Mise à jour cumulative 8 pour SQL Server 2016 SP1
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs et 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
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.
Références
Apprenez-en davantage sur la terminologieutilisée par Microsoft pour décrire les mises à jour logicielles.