KB4055758 – ВИПРАВЛЕНО: Неузгоджена поведінка щодо повернення пустих значень наприкінці даних CHAR і BINARY у SQL Server

Застосовується до
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

Ознаки

Припустімо, що у вас є таблиця Microsoft SQL Server, на основі якої побудовано один або кілька індексів. Коли ви запитуєте до таблиці, SQL ServerSQL Server може виконувати неузгоджене заповнення даними для стовпців CHAR і BINARY. Неузгоджена поведінка повернення пустих значень наприкінці стовпців даних CHAR і BINARY залежить від таких умов.

  • Параметри ANSI_PADDING під час створення стовпців у SQL Server таблиці.
  • Рішення про сканування таблиці або підбір індексу для стовпців.

Причина

У деяких сценаріях SQL Server може виконувати оптимізацію, яка дозволяє обійти багато операцій для швидшої доставки даних. Проблема виникає через те, що SQL Server не розуміє, що оптимізацію не можна застосувати для наведеного вище сценарію.

Додаткові відомості

Така поведінка SQL Server не відповідає поведінці, описаній у статті "Використання даних Char і Varchar".

Примітка.

Якщо стовпець char NULL ANSI_PADDING увімкнуто, він працює так само, як і стовпець char NOT NULL: значення доповнюються правою кнопкою миші до розміру стовпця. Якщо ANSI_PADDING вимкнено, коли створюється стовпець char NULL, він поводиться подібно до стовпця varchar із зазначенням ANSI_PADDING OFF: кінцеві пусті поля скорочуються.

Спосіб усунення проблеми

Цю проблему вирішено в наведених нижче сукупних оновленнях для SQL ServerSQL Server:

Сукупний пакет оновлень 2 для SQL ServerSQL Server 2017

Сукупний пакет оновлень 9 для SQL ServerSQL Server 2016

Сукупний пакет оновлень 6 для SQL ServerSQL Server 2016 SP1

Сукупний пакет оновлень 8 для SQL ServerSQL Server 2014 SP2

Сукупний пакет оновлень 7 для SQL ServerSQL Server 2014 SP1

Відомості про сукупні оновлення для SQL ServerSQL Server :

Кожне нове сукупне оновлення для SQL Server містить усі виправлення та виправлення системи безпеки, які входили до попереднього сукупного пакета оновлень. Перегляньте останні сукупні оновлення для SQL Server.

Останнє сукупне оновлення для SQL ServerSQL Server 2017

Останнє сукупне оновлення для SQL ServerSQL Server 2016

Останнє сукупне оновлення для SQL ServerSQL Server 2014

Стан

Корпорація Майкрософт підтвердила, що це одна з проблем із продуктами Microsoft, перелічених у розділі "Застосовується до"

Посилання

Дізнайтеся, за допомогою яких термінів корпорація Майкрософт описує оновлення програмного забезпечення.