KB4055758 - OPRAVA: Nekonzistentní chování při vracení koncových prázdných hodnot na konci dat CHAR a BINARY v SQL Server

Platí pro
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

Příznaky

Předpokládejme, že máte tabulku systému Microsoft SQL Server, na které je postaven jeden nebo více indexů. Při dotazování na tabulku může SQL Server provádět nekonzistentní odsazení dat pro sloupce CHAR a BINARY. Nekonzistentní chování při vracení koncových prázdných hodnot na konci sloupců dat ZNAK a BINARY závisí na následujících podmínkách:

  • Nastavení ANSI_PADDING při vytváření sloupců v tabulce SQL Server.
  • Rozhodnutí provést u sloupců buď prohledávání tabulek, nebo vyhledávání indexů.

Příčina

V určitých scénářích může SQL Server provést optimalizaci, která mu umožní obejít mnoho operací a zajistit tak rychlejší doručování dat. K tomuto problému dochází, protože SQL Server nerozpozná, že ve výše uvedeném scénáři nejde použít optimalizaci.

Další informace

Toto chování SQL Server není v souladu s chováním popsaným v následujícím článku: Použití dat Char a Varchar.

Poznámka

Pokud je ANSI_PADDING ZAPNUTO, když je vytvořen sloupec znak s hodnotou NULL, chová se stejně jako sloupec znak NOT NULL: hodnoty jsou odsazeny vpravo podle velikosti sloupce. Pokud je ANSI_PADDING při vytvoření sloupce znak s hodnotou NULL vypnutý, chová se jako sloupec varchar s ANSI_PADDING nastaveným na OFF: koncové prázdné buňky jsou zkráceny.

Řešení

Tento problém je opravený v následujících kumulativních aktualizacích pro SQL Server:

Kumulativní aktualizace 2 pro SQL Server 2017

Kumulativní aktualizace 9 pro SQL Server 2016

Kumulativní aktualizace 6 pro SQL Server 2016 SP1

Kumulativní aktualizace 8 pro SQL Server 2014 SP2

Kumulativní aktualizace 7 pro SQL Server 2014 SP1

Informace o kumulativních aktualizacích pro SQL Server:

Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace pro SQL Server:

Nejnovější kumulativní aktualizace pro SQL Server 2017

Nejnovější kumulativní aktualizace pro SQL Server 2016

Nejnovější kumulativní aktualizace pro SQL Server 2014

Stav

Společnost Microsoft potvrdila, že se jedná o problém v produktech Microsoftu, které jsou uvedeny v sekci Informace v tomto článku jsou určeny pro produkt v tomto článku

Reference

Podívejte se na informace o terminologii, kterou společnost Microsoft používá k popisování aktualizací softwaru.