KB4055758 - REMEDIERE: Comportament inconsistent pentru returnarea valorilor goale finale la sfârșitul datelor CHAR și BINARY în SQL Server

Se aplică la
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

Simptome

Să presupunem că aveți un tabel Microsoft SQL Server care are unul sau mai multe indexuri construite pe baza sa. Atunci când interogați tabelul, SQL Server poate efectua spațiere inconsistentă a datelor pentru coloanele CHAR și BINARY. Comportamentul inconsistent pentru returnarea valorilor goale de la sfârșitul coloanelor de date CHAR și BINARY depinde de următoarele condiții:

  • Setările ANSI_PADDING când se creează coloane în tabelul SQL Server.
  • Decizia de a efectua o scanare de tabel sau o căutare de index în coloane.

Cauză

În anumite scenarii, SQL Server poate efectua o optimizare care îi permite să ignore multe operațiuni pentru livrarea mai rapidă a datelor. Problema apare deoarece SQL Server nu recunoaște că optimizarea nu poate fi aplicată pentru scenariul de mai sus.

Mai multe informații

Acest comportament al SQL Server nu respectă comportamentul prezentat în următorul articol: Utilizarea datelor Char și Varchar.

Notă

Dacă ANSI_PADDING este ACTIVATĂ atunci când se creează o coloană char NULL, aceasta se comportă la fel ca o coloană char NOT NULL: valorile sunt completate la dreapta la dimensiunea coloanei. Dacă ANSI_PADDING este DEZACTIVATĂ atunci când este creată o coloană char NULL, ea se comportă ca o coloană varchar cu ANSI_PADDING setată OFF: spațiile goale de la sfârșitul sunt trunchiate.

Rezolvare

Această problemă este remediată în următoarele actualizări cumulative pentru SQL Server:

Actualizarea cumulativă 2 pentru SQL Server 2017

Actualizarea cumulativă 9 pentru SQL Server 2016

Actualizarea cumulativă 6 pentru SQL Server 2016 SP1

Actualizarea cumulativă 8 pentru SQL Server 2014 SP2

Actualizarea cumulativă 7 pentru SQL Server 2014 SP1

Despre actualizările cumulative pentru SQL Server:

Fiecare actualizare cumulativă nouă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:

Cea mai recentă actualizare cumulativă pentru SQL Server 2017

Cea mai recentă actualizare cumulativă pentru SQL Server 2016

Cea mai recentă actualizare cumulativă pentru SQL Server 2014

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea "Se aplică la"

Referințe

Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.