Проблема
Предположим, что у вас есть таблица microsoft SQL Server с одним или несколькими индексами. При запросе к таблице SQL Server может выполнять несогласованное заполнение данных для столбцов CHAR и BINARY. Несогласованное поведение при возврате конечных пустых значений в конце столбцов данных CHAR и BINARY зависит от следующих условий:
- Параметры ANSI_PADDING при создании столбцов в таблице SQL Server.
- Решение выполнить сканирование таблицы или поиск индекса по столбцам.
Причина
В некоторых сценариях SQL Server может выполнять оптимизацию, которая позволяет обойти множество операций для более быстрой доставки данных. Проблема возникает из-за того, что SQL Server не признает, что оптимизация не может быть применена для приведенного выше сценария.
Дополнительные сведения
Это поведение SQL Server не соответствует поведению, описанное в следующей статье: Использование данных Char и Varchar.
Примечание
Если ANSI_PADDING имеет значение ON при создании столбца char NULL, он ведет себя так же, как столбец char NOT NULL: значения заполняются по правому краю в размере столбца. Если при создании столбца char NULL ANSI_PADDING имеет значение OFF, он ведет себя как столбец varchar с ANSI_PADDING значение OFF: конечные пробелы усекаются.
Решение
Эта проблема устранена в следующих накопительных обновлениях для SQL Server:
Накопительный пакет обновления 2 для SQL Server 2017
Накопительный пакет обновления 9 для SQL Server 2016 г.
Накопительный пакет обновления 6 для SQL Server 2016 с пакетом обновления 1 (SP1)
Накопительный пакет обновления 8 для SQL Server 2014 с пакетом обновления 2 (SP2)
Накопительный пакет обновления 7 для SQL Server 2014 с пакетом обновления 1 (SP1)
Сведения о накопительных обновлениях для SQL Server:
Каждое новое накопительное обновление для SQL Server содержит все исправления и все исправления для системы безопасности, которые были включены в предыдущее накопительное обновление. Ознакомьтесь с последними накопительными обновлениями для SQL Server:
Последнее накопительное обновление для SQL Server 2017 г.
Последнее накопительное обновление для SQL Server 2016 г.
Последнее накопительное обновление для SQL Server 2014 г.
Состояние
Корпорация Майкрософт подтвердила, что это проблема в продуктах Майкрософт, перечисленных в разделе "Применимо к"
Ссылки
Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.