KB4055758 – POPRAVEK: Nedosledno vedenje za vračanje končnih praznih mest na koncu podatkov CHAR in BINARY v SQL Server

Velja za
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

Znaki

Predpostavimo, da imate tabelo Microsoft SQL Server, na kateri je zgrajeno eno ali več indeksov. Ko poizvedujete v tabeli, lahko SQL Server izvede nedosledno odmijevanje podatkov za stolpca CHAR in BINAR. Nedosledno vedenje za vračanje končnih praznih mest na koncu podatkovnih stolpcev CHAR in BINARY je odvisno od teh pogojev:

  • Nastavitve ANSI_PADDING, ko so stolpci ustvarjeni v tabeli SQL Server.
  • Odločitev za izvedbo skeniranja tabele ali iskanja indeksa v stolpcih.

Vzrok

V nekaterih scenarijih lahko SQL Server izvede optimizacijo, ki mu omogoča, da zaobide številne operacije za hitrejšo dostavo podatkov. Do težave pride, ker SQL Server ne prepozna, da optimizacije ni mogoče uporabiti za zgornji scenarij.

Več informacij

To vedenje strežnika SQL Server ni skladno z vedenjem, ki je dokumentirano v tem članku: Uporaba podatkov Char in Varchar.

Opomba

Če je ANSI_PADDING vklopljen, ko je ustvarjen stolpec z oznako NULL, se obnaša enako kot stolpec z znakom NOT NULL: vrednosti so pravilno obmaknjene z velikostjo stolpca. Če je ANSI_PADDING IZKLOPLJEN, ko je ustvarjen stolpec z oznako NULL, se obnaša kot stolpec varchar z ANSI_PADDING nastavljeno OFF: končne praznine so prirezane.

Rešitev

Ta težava je odpravljena v teh zbirnih posodobitvah za SQL Server:

Zbirna posodobitev 2 za SQL Server 2017

Zbirna posodobitev 9 za SQL Server 2016

Zbirna posodobitev 6 za servisni paket SP1 za SQL Server 2016

Zbirna posodobitev 8 za servisni paket SP2 za SQL Server 2014

Zbirna posodobitev 7 za servisni paket SP1 za SQL Server 2014

O zbirnih posodobitvah za SQL Server:

Vsaka nova zbirna posodobitev za SQL Server vsebuje vse sprotne popravke in varnostne popravke, ki so bili vključeni v prejšnjo zbirno posodobitev. Oglejte si najnovejše zbirne posodobitve za SQL Server:

Najnovejša zbirna posodobitev za SQL Server 2017

Najnovejša zbirna posodobitev za SQL Server 2016

Najnovejša zbirna posodobitev za SQL Server 2014

Stanje

Microsoft je potrdil, da gre za težavo v Microsoftovih izdelkih, ki so navedeni v razdelku »Velja za«

Sklici

Preberite več o terminologiji, ki jo Microsoft uporablja za opisovanje posodobitev programske opreme.