KB4055758 – KORJAUS: Epäjohdonmukainen toiminta, kun lopussa olevia tyhjiä kohtia palautetaan CHAR- ja BINARY-tietojen lopussa SQL Server

Käytetään kohteeseen
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

Ongelman ilmenemistapa

Oletetaan, että sinulla on Microsoft SQL Server -taulukko, johon on rakennettu yksi tai useampi indeksi. Kun teet kyselyitä taulukosta, SQL Server saattaa täyttää CHAR- ja BINAAR-sarakkeiden tietoja epäjohdonmukaisesti. CHAR- ja BINAAR-tietosarakkeiden lopussa olevien loppuvien tyhjien solujen palauttamisen epäjohdonmukainen toiminta riippuu seuraavista seikoista:

  • ANSI_PADDING asetukset, kun SQL Server taulukossa luodaan sarakkeita.
  • Päätös taulukon skannauksen tai indeksin haun suorittamisesta sarakkeissa.

Syy

Tietyissä tilanteissa SQL Server voi suorittaa optimoinnin, jonka avulla se voi ohittaa monet toiminnot tietojen toimittamisen nopeuttamiseksi. Ongelma ilmenee, koska SQL Server ei tunnista, että optimointia ei voi käyttää yllä olevassa skenaariossa.

Lisätietoja

Tämä SQL Server ei vastaa seuraavassa artikkelissa kuvattua toimintaa: Char- ja Varchar-tietojen käyttäminen

Huomautus

Jos ANSI_PADDING on käytössä, kun char NULL -sarake luodaan, se toimii samoin kuin char NOT NULL -sarake: arvot on täytetty oikealle sarakkeen koon mukaisesti. Jos ANSI_PADDING on POIS KÄYTÖSTÄ, kun char NULL -sarake luodaan, se toimii kuin varchar-sarake, jonka ANSI_PADDING on OFF-asennossa: lopussa olevat tyhjät arvot katkaistaan.

Ratkaisu

Tämä ongelma on korjattu seuraavissa SQL Server kumulatiivisissa päivityksissä:

SQL Server 2017:n kumulatiivinen päivitys 2

SQL Server 2016:n kumulatiivinen päivitys 9

SQL Server 2016 SP1:n kumulatiivinen päivitys 6

SQL Server 2014 SP2:n kumulatiivinen päivitys 8

SQL Server 2014 SP1:n kumulatiivinen päivitys 7

Tietoja SQL Server:n kumulatiivisista päivityksistä:

Jokainen uusi SQL Server -kumulatiivinen päivitys sisältää kaikki edelliseen kumulatiiviseen päivitykseen sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Tutustu SQL Serverin uusimpiin kumulatiivisiin päivityksiin:

SQL Server 2017:n uusin kumulatiivinen päivitys

SQL Server 2016:n uusin kumulatiivinen päivitys

SQL Server 2014:n uusin kumulatiivinen päivitys

Tila

Microsoft on vahvistanut tämän olevan ongelma niissä Microsoft-tuotteissa, jotka on lueteltu Koskee seuraavia tuotteita -osiossa

Viitteet

Lue tietoja Microsoftin ohjelmistopäivitystensä kuvaamiseen käyttämästä sanastosta.