KB4055758 — POPRAWKA: niespójne zachowanie zwracania końcowych wartości pustych na końcu danych CHAR i BINARY w SQL Server

Dotyczy
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

Objawy

Załóżmy, że masz tabelę Microsoft SQL Server, na której utworzono jeden lub więcej indeksów. Podczas wykonywania zapytania dotyczącego tabeli program SQL Server może wykonywać niespójne dopełnianie danych dla kolumn CHAR i BINARNYCH. Niespójne zachowanie zwracania końcowych wartości pustych na końcu kolumn danych CHAR i BINARY zależy od następujących warunków:

  • Ustawienia ANSI_PADDING podczas tworzenia kolumn w tabeli SQL Server.
  • Decyzja o przeprowadzeniu skanowania tabeli lub przeszukiwania indeksu w kolumnach.

Przyczyna

W niektórych scenariuszach program SQL Server może wykonać optymalizację pozwalającą na pominięcie wielu operacji w celu szybszego dostarczania danych. Ten problem występuje, ponieważ SQL Server nie rozpoznaje, że optymalizacji nie można zastosować w powyższym scenariuszu.

Więcej informacji

To zachowanie programu SQL Server nie jest zgodne z zachowaniem udokumentowanym w następującym artykule: Używanie danych Char i Varchar.

Uwaga

Jeśli ANSI_PADDING jest WŁ., gdy jest tworzona kolumna char NULL, działa tak samo jak kolumna char NOT NULL: wartości są dopełniane prawym przyciskiem do rozmiaru kolumny. Jeśli ANSI_PADDING ma wartość OFF, gdy jest tworzona kolumna char NULL, zachowuje się jak kolumna varchar z ustawieniem ANSI_PADDING OFF: końcowe puste wartości są obcinane.

Rozwiązanie

Ten problem został rozwiązany w następujących aktualizacjach zbiorczych programu SQL Server:

Aktualizacja zbiorcza 2 dla programu SQL Server 2017

Aktualizacja zbiorcza 9 dla programu SQL Server 2016

Aktualizacja zbiorcza 6 dla programu SQL Server 2016 z dodatkiem SP1

Aktualizacja zbiorcza 8 dla programu SQL Server 2014 z dodatkiem SP2

Aktualizacja zbiorcza 7 dla programu SQL Server 2014 z dodatkiem SP1

Informacje o aktualizacjach zbiorczych programu SQL Server:

Każda nowa aktualizacja zbiorcza programu SQL Server zawiera wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji skumulowanej. Sprawdź najnowsze aktualizacje zbiorcze dla programu SQL Server:

Najnowsza aktualizacja zbiorcza dla programu SQL Server 2017

Najnowsza aktualizacja zbiorcza dla programu SQL Server 2016

Najnowsza aktualizacja zbiorcza dla programu SQL Server 2014

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji "Dotyczy"

Źródła informacji

Dowiedz się więcej o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.