Sümptomid
Oletame, et teil on Microsoft SQL serveri tabel, millel on üks või mitu indeksit, mis on sellele ehitatud. Kui esitate päringu tabeli vastu, võib SQL Server teha ebajärjekindlaid andmeid, mis on mõeldud nii CHAR kui ka BINAARse veergude jaoks. Ebaühtlane käitumine, mille tõttu kuvatakse veergude ja BINAARse andmete veergude lõpus olevad lüngad, sõltub järgmistest tingimustest.
-
ANSI_PADDING sätted, kui veerud luuakse SQL serveri tabelis.
-
Otsus teha veergudes kas tabelit skannida või indeksit otsida.
Põhjus
Teatud juhtudel võib SQL Server teha optimeerimise, mis võimaldab tal ümbersõit palju toiminguid kiirema andmeedastuse jaoks. See probleem ilmneb, sest SQL Server ei tuvasta, et optimeerimist ei saa rakendada ülaltoodud stsenaariumis.
Lisateave
SQL serveri selline käitumine ei vasta järgmises artiklis kirjeldatud käitumisele: char ja muutuvpikkusega Tärkandmed andmete kasutamine.
Kui ANSI_PADDING on loodud siis, kui veerg char NULL on loodud, käitub see samana kui märk, mis pole NULL, veerg: väärtused on veeru mahule paremal viisil polsterdatud. Kui ANSI_PADDING on välja lülitatud, kui mõni char NULL on loodud, käitub see sarnaselt muutuvpikkusega Tärkandmed veeruga, mille ANSI_PADDING on välja lülitatud: tühikute jälitamine on kärbitud.
Lahendus
See probleem on lahendatud SQL serveri järgmisi kumulatiivseid värskendusi.
Kumulatiivne Update 2 SQL Server 2017
Kumulatiivne Update 9 SQL Server 2016
Kumulatiivne Update 6 SQL Server 2016 SP1 jaoks
Iga uus koondvärskenduses SQL Server sisaldab kõiki käigultparandused ja kõik turvaparandusi, mis kuulusid eelmise koondvärskenduse. Vaadake SQL serveri kumulatiivseid värskendusi.
Uusim SQL Server 2017 koondvärskenduses
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes
Viited
Siit leiate teavet selle kohta, mida Microsoftkasutab tarkvaravärskenduste kirjeldamiseks.