KB4055758 – FIX: Inkonsistentes Verhalten bei der Rückgabe nachgestellter 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 mindestens ein Index erstellt wurde. Wenn Sie die Tabelle abfragen, führt SQL Server möglicherweise inkonsistente Datenauffüllungen für CHAR- und BINARY-Spalten aus. Das inkonsistente Verhalten bei der Rückgabe nachgestellter Leerzeichen am Ende der CHAR- und BINARY-Datenspalten hängt von den folgenden Bedingungen ab:

  • Die Einstellungen der ANSI_PADDING, wenn Spalten in der SQL Server Tabelle erstellt werden.
  • Die Entscheidung, ob die Tabelle oder die Indexsuche für die Spalten durchgeführt werden soll.

Ursache

In bestimmten Szenarien führt SQL Server möglicherweise eine Optimierung durch, 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 obige Szenario nicht angewendet werden kann.

Weitere Informationen

Dieses Verhalten von SQL Server entspricht nicht dem im folgenden Artikel beschriebenen Verhalten: Verwenden von Char- und Varchar-Daten.

Hinweis

Wenn ANSI_PADDING beim Erstellen einer char NULL-Spalte aktiviert ist, verhält sie sich wie eine char NOT NULL-Spalte: Die Werte werden rechts auf die Größe der Spalte aufgefüllt. Wenn ANSI_PADDING beim Erstellen einer char NULL-Spalte auf OFF festgelegt ist, verhält sie sich wie eine varchar-Spalte, bei der ANSI_PADDING deaktiviert ist: Nachgestellte 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 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 kumulative Update für SQL Server 2016

Neuestes kumulative Update für SQL Server 2014

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt "Gilt für" aufgeführt sind

Referenzmaterial

Informieren Sie sich über die Terminologie, die Microsoft zum Beschreiben von Softwareupdates verwendet.