Příznaky
Předpokládejme, že máte tabulku Microsoft SQL serveru s jedním nebo více indexy. Při dotazu na tabulku může SQL Server provádět nekonzistentní odsazení dat pro znak a binární sloupce. Nekonzistentní chování při vracení koncových mezer na konci sloupců typu CHAR a BINARY závisí na následujících podmínkách:
-
Nastavení ANSI_PADDING při vytváření sloupců v tabulce SQL serveru
-
Rozhodnutí o provádění funkce prohledávání tabulky nebo hledání rejstříku ve sloupcích
Příčina
V určitých situacích může SQL Server provést optimalizaci, která umožňuje vynechat mnoho operací pro rychlejší doručování dat. K tomuto problému dochází, protože SQL Server nerozpoznává, že optimalizaci nelze použít pro výše uvedený scénář.
Další informace
Toto chování SQL serveru nevyhovuje chování popsanému v následujícím článku: používání dat char a varchar.
Pokud je funkce ANSI_PADDING ZAPNUTá, když je vytvořený sloupec znak NULL, chová se stejně jako sloupec NOT NULL: hodnoty jsou doplněny o velikost sloupce. Pokud je ANSI_PADDING v případě, že je vytvořen sloupec char NULL, chová se jako sloupec varchar s polem ANSI_PADDING nastaveno: koncové mezery jsou zkráceny.
Řešení
Tento problém je opravený v následujících kumulativních aktualizacích systému SQL Server:
Kumulativní aktualizace 2 pro SQL Server 2017
Kumulativní aktualizace 9 pro SQL Server 2016
Kumulativní aktualizace 6 pro SQL Server 2016 SP1
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 SQL serveru:
Nejnovější kumulativní aktualizace pro SQL Server 2017
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedené v části "platí pro"
Odkazy
Informace o terminologiipoužívané společností Microsoft k popisu aktualizací softwaru.