Simptomi
Pieņemsim, ka jums ir Microsoft SQL Server tabula, kurai ir izveidots viens vai vairāki indeksi. Kad vaicājums tiek salīdzināts ar tabulu, SQL Server var veikt nekonsekventus datu polsterējumu attiecībā uz CHAR un BINĀRajām kolonnām. Nekonsekventa darbība, kas tiek atgriezta, kad beidzas rakstzīmju CHAR un BINĀRais datu kolonnu beigās, ir atkarīga no tālāk norādītajiem nosacījumiem.
-
ANSI_PADDING iestatījumi, ja kolonnas ir izveidotas, izmantojot SQL Server tabulu.
-
Lēmums veikt tabulas skenēšanu vai alfabētiskā rādītāja meklēšana kolonnās.
Cēlonis
Noteiktos gadījumos SQL Server var veikt optimizāciju, kas ļauj apiet daudz darbību, lai nodrošinātu ātrāku datu piegādi. Problēma rodas tāpēc, ka SQL Server neatpazīst, ka šajā scenārijā nevar lietot optimizāciju.
Papildinformācija
Šī SQL Server darbība neatbilst darbībām, kas ir dokumentētas šajā rakstā: CHAR un varchar datu izmantošana.
Ja ANSI_PADDING ir ieslēgta, kad tiek izveidota kolonna CHAR NULL, tā darbojas tāpat kā CHAR NOT NULL kolonna: vērtības ir ar peles labo pogu uz kolonnas lielumu. Ja ANSI_PADDING ir izslēgta, ja tiek izveidota kolonna CHAR NULL, tā darbojas kā varchar kolonna ar ANSI_PADDING izslēgta: beigu tukšas vērtības tiek noapaļotas.
Risinājums
Šī problēma ir novērsta tālāk norādītajos kumulatīvajos SQL Server atjauninājumos:
Kumulatīvais atjauninājums 2 SQL Server 2017
Kumulatīvais atjauninājums 9 SQL Server 2016
Kumulatīvais atjauninājums 6 SQL Server 2016 SP1
Katrā jaunajā kumulatīvajā SQL Server atjauninājumā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā kumulatīvajā atjauninājumā. Skatiet jaunākos kumulatīvos atjauninājumus SQL Server:
Jaunākais SQL Server 2017 kumulatīvais atjauninājums
Statusa
Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas norādīti sadaļā "attiecas uz"
Atsauces
Uzziniet par terminoloģiju, ko Microsoft izmanto, lai aprakstītu programmatūras atjauninājumus.