Симптоми
Приемете, че имате таблица на Microsoft SQL Server, в която са вградени един или повече индекси. Когато задавате заявка спрямо таблицата, SQL Server може да извърши несъгласувано подплънка на данни за чар и ДВОИЧНи колони. Несъгласуваното поведение при връщане на оставащи празни места в края на колоните с чар и ДВОИЧНи данни зависи от следните условия:
-
Настройките на ANSI_PADDING, когато се създават колони в таблицата на SQL Server.
-
Решението за извършване на сканиране към таблица или търсене на индекс върху колоните.
Причина
При определени сценарии SQL Server може да извърши оптимизация, която му позволява да заобиколи много операции за по-бързо доставяне на данни. Проблемът възниква, защото SQL Server не разпознава, че оптимизацията не може да се приложи за сценария по-горе.
Повече информация
Това поведение на SQL Server не съответства на поведението, което е документирано в следната статия: използване на данни за чар и VARCHAR.
Ако ANSI_PADDING е включен, когато се създава колона за НИЩОЖен знак, той се държи по същия начин, както и колоната, която не е NULL: стойностите са с отдясно подплатени до размера на колоната. Ако ANSI_PADDING е ИЗКЛЮЧЕНо, когато е създадена колона за НИЩОЖен знак, той се държи като колона на VARCHAR с ANSI_PADDING зададено: КРАЙните празни стойности се закръгляват.
Решение
Този проблем е коригиран в следните сборни актуализации за SQL Server:
Кумулативна актуализация 2 за SQL Server 2017
Сборна актуализация 9 за SQL Server 2016
Кумулативна актуализация 6 за SQL Server 2016 SP1
Всяка нова сборна актуализация за SQL Server съдържа всички поправки и всички корекции на защитата, които са били включени в предишната сборна актуализация. Вижте последните сборни актуализации за SQL Server:
Най-новата сборна актуализация за SQL Server 2017
Състоянието
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за"
Препратки
Научете повече за терминологията, която Microsoft използва, за да опише софтуерни актуализации.