Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
-
Sie verwenden eine Datenbank, deren Kompatibilitätsgrad in Microsoft SQL Server 2016 auf 130 festgelegt ist.
-
Sie führen eine Abfrage aus, die auf einen Spaltenspeicherindex und einen Zeilenspeicherindex oder einen Heap zugreift und ein Filter-Prädikat (WHERE-Klausel) enthält.
In diesem Szenario können SQL Server das Filterprädikat nicht näher an den Datenquellenoperator pushen (Tabellen- oder Indexscan oder Suchvorgang). Dies kann zu einer suboptimalen Abfrageleistung führen.
Wenn die Abfrage einen Ausdruck (z. B. die Typkonvertierung) verwendet, bei dem seine Richtigkeit von gefilterten Daten abhängt (z. B. wird eine char-Tabellenspalte in int konvertiert, aber nur eine Teilmenge von Werten enthält eine gültige int-Darstellung, und diese Teilmenge wird durch das Filter-Prädikat identifiziert), kann bei der Abfrage ein Datenkonvertierungsfehler auftreten, der einem der folgenden ähnelt:
Fehler bei der Konvertierung des varchar-Werts '0,5' in den Datentyp int: Msg 245, Ebene 16, Zustand 1, Zeile 20
.
Msg 8114, Ebene 16, Status 5, Zeile 34
Fehler beim Konvertieren des Datentyps varchar in bigint.
Lösung
Dieses Problem wurde im folgenden kumulativen Update für SQL Server behoben:
Kumulatives Update 2 für SQL Server 2016 SP1
Hinweis Sie müssen Hotfixes für den Abfrageoptimierer aktivieren, damit dieser Fix wirksam wird.
Sie können die Hotfixes für den Abfrageoptimierer mithilfe einer der folgenden Optionen aktivieren: Ablaufverfolgungsflag 4199, Datenbankbereichskonfigurationseinstellung QUERY_OPTIMIZER_HOTFIXES=ON (verfügbar in SQL Server 2016 und höher) oder USE_HINT Abfrageoption "ENABLE_QUERY_OPTIMIZER_HOTFIXES" (verfügbar in SQL Server 2016 SP1 und höher).
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:Neuestes kumulatives Update für SQL Server 2016 an.
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.
Informationsquellen
Erfahren Sie mehr über die Terminologie, die Microsoft zum Beschreiben von Softwareupdates verwendet.