KB4055758 – KORREKTUR: Inkonsistentes Verhalten beim Zurückgeben von nachfolgenden Leerzeichen am Ende von CHAR- und BINARY-Daten in SQL Server

Gilt für
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) SQL Server 2016 Service Pack 1 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 2014 Service Pack 2 - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

Symptome

Angenommen, Sie verfügen über eine Microsoft SQL Server Tabelle, auf der ein oder mehrere Indizes basieren. Wenn Sie abfragen, führen SQL Server möglicherweise inkonsistente Datenabstand für CHAR- und BINARY-Spalten durch. Das inkonsistente Verhalten für die Rückgabe nachgestellter Leerzeichen am Ende der CHAR- und BINARY-Datenspalten hängt von den folgenden Bedingungen ab:

  • Die Einstellungen des ANSI_PADDING, wenn Spalten in der SQL Server Tabelle erstellt werden.
  • Die Entscheidung, entweder eine Tabellenüberprüfung oder eine Indexsuche für die Spalten durchzuführen.

Ursache

In bestimmten Szenarien kann SQL Server eine Optimierung durchführen, die es ermöglicht, viele Vorgänge für eine schnellere Datenübermittlung zu umgehen. Das Problem tritt auf, weil SQL Server nicht erkennt, dass die Optimierung für das oben genannte Szenario nicht angewendet werden kann.

Weitere Informationen

Dieses Verhalten von SQL Server entspricht nicht dem Verhalten, das im folgenden Artikel dokumentiert ist: Verwenden von Char- und Varchar-Daten.

Hinweis

Wenn ANSI_PADDING beim Erstellen einer char NULL-Spalte auf ON festgelegt ist, verhält es sich genauso wie eine char NOT NULL-Spalte: Werte werden bis zur Größe der Spalte rechts aufgefüllt. Wenn ANSI_PADDING beim Erstellen einer char NULL-Spalte auf OFF festgelegt ist, verhält es sich wie eine varchar-Spalte mit ANSI_PADDING Set OFF: nachfolgende Leerzeichen werden abgeschnitten.

Lösung

Dieses Problem wurde in den folgenden kumulativen Updates für SQL Server behoben:

Kumulatives Update 2 für SQL Server 2017

Kumulatives Update 9 für SQL Server 2016

Kumulatives Update 6 für SQL Server 2016 SP1

Kumulatives Update 8 für SQL Server 2014 SP2

Kumulatives Update 7 für SQL Server 2014 SP1

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 kumulative Update für SQL Server 2017

Neuestes kumulatives Update für SQL Server 2016

Neuestes kumulatives Update für SQL Server 2014

Status

Microsoft hat bestätigt, dass dies ein Problem in 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.