Symptome
Angenommen, Sie verfügen über eine Abfrage, die einige Zeichenfolgenvorgänge ausführt, z. B. Verkettung, für CHAR- oder VARCHAR-Spalten in Microsoft SQL Server 2014, 2016 und 2017. Nehmen Sie folgendes Szenario an:
- Sie verketten Spalten mit verschiedenen Sortierungen, die ihnen zugewiesen sind.
- Diese Sortierungen sind miteinander nicht kompatibel. Sie versuchen beispielsweise, eine Spalte, die als Latin1_General_CI_AI sortiert ist, mit Latin1_General_BIN zu verketten.
- Das Endergebnis der Verkettung wird einer bestimmten Sortierung (einschließlich "database_default") als Lösung des Sortierungskonflikts zugewiesen.
In diesem Szenario gibt SQL Server möglicherweise eine Verkaufsbestätigung zurück, die "Ungültiger Vergleich aufgrund von NO COLLATION" angibt, und Sie erhalten möglicherweise einige Fehlermeldungen, die der folgenden ähneln:
Hinweis
Location: typinfo.cpp:LineNumber
Ausdruck: false
SPID: SPID
Prozess-ID: ProcessID
Beschreibung: Ungültiger Vergleich aufgrund von NO COLLATION.Msg 3624, Level 20, State 1, Line LineNumber
Eine Überprüfung der Systemassertion ist fehlgeschlagen. Weitere Informationen finden Sie im SQL Server Fehlerprotokoll. In der Regel wird ein Assertionsfehler durch einen Softwarefehler oder eine Datenbeschädigung verursacht. Erwägen Sie die Ausführung von DBCC CHECKDB, um nach einer Beschädigung der Datenbank zu suchen. Wenn Sie während des Setups zugestimmt haben, Dumps an Microsoft zu senden, wird ein Minidump an Microsoft gesendet. Möglicherweise ist ein Update von Microsoft im neuesten Service Pack oder in einem Hotfix vom technischen Support verfügbar.Msg 596, Level 21, State 1, LineNumber
Die Ausführung kann nicht fortgesetzt werden, da sich die Sitzung im Kill-Zustand befindet.Msg 0, Level 20, State 0, LineNumber
Beim aktuellen Befehl ist ein schwerwiegender Fehler aufgetreten. Die Ergebnisse sollten ggf. verworfen werden.
Ursache
Während der Abfrageoptimierungsphase versucht SQL Server, Kardinalitäten für Zwischenergebnisse verschiedener Phasen der Abfrage zu berechnen, z. B. die Verkettung. Da die Auflösung des Sortierungskonflikts ganz am Ende stattfindet, ist sich der Abfrageoptimierer möglicherweise nicht dessen bewusst und versucht, die Berechnung der Verkettungskardinalität für eine Eingabe mit konfliktierender Sortierung durchzuführen.
Lösung
Dieses Problem wurde in den folgenden kumulativen Updates für SQL Server behoben:
Kumulatives Update 8 für SQL Server 2016 SP1
Kumulatives Update 4 für SQL Server 2017
Kumulatives Update 9 für SQL Server 2014 SP2
Informationen zu kumulativen Updates für SQL Server:
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsfixes, die im vorherigen kumulativen Update enthalten waren. Sehen Sie sich die neuesten kumulativen Updates für SQL Server an:
Neuestes kumulatives Update für SQL Server 2016
Neuestes kumulative Update für SQL Server 2017
Neuestes kumulatives Update für SQL Server 2014
Status
Microsoft hat bestätigt, dass dies ein Problem bei den Microsoft-Produkten ist, die im Abschnitt „Gilt für“ aufgeführt sind.
Referenzmaterial
Informieren Sie sich über die Terminologie, die Microsoft zum Beschreiben von Softwareupdates verwendet.