Příznaky
Předpokládejme, že máte dotaz, který provádí některé operace s řetězci, například zřetězení sloupců CHAR nebo VARCHAR v Microsoft SQL Server 2014, 2016 a 2017. Vezměte v úvahu následující scénář:
- Můžete zřetězit sloupce s různými přiřazeními, které jsou k nim přiřazené.
- Tato řazení jsou vzájemně nekompatibilní. Pokusíte se třeba zřetězit sloupec, který se bude kompletovat jako Latin1_General_CI_AI s Latin1_General_BIN.
- Konečný výsledek zřetězení je v rámci řešení konfliktů řazení přiřazen ke konkrétnímu řazení (včetně "database_default").
V tomto scénáři může SQL Server vrátit kontrolní výraz pro maloobchodní prodej, který uvádí "Neplatné porovnání kvůli NO COLLATION", a mohou se zobrazit některé chybové zprávy podobné následující:
Poznámka
Umístění: typinfo.cpp:ČísloŘádku
Výraz: nepravda
SPID: SPID
ID procesu: ProcessID
Popis: Neplatné porovnání kvůli NO COLLATION.Zpráva 3624, úroveň 20, stav 1, číslo řádku
Kontrola kontrolního výrazu systému se nezdařila. Podrobnosti najdete v protokolu chyb systému SQL Server. Chyba kontrolního výrazu je obvykle způsobena chybou softwaru nebo poškozením dat. Chcete-li zkontrolovat poškození databáze, zvažte spuštění příkazu DBCC CHECKDB. Pokud jste během instalace souhlasili s odesíláním výpisů do Microsoftu, bude společnosti Microsoft odeslán minivýpis. Aktualizace může být k dispozici od Microsoftu v nejnovější aktualizaci Service Pack nebo v opravě hotfix od technické podpory.Zpráva 596, úroveň 21, stav 1, číslo řádku
V provádění nemůže pokračovat, protože relace je ve stavu ukončení.Zpráva 0, úroveň 20, stav 0, číslo řádku
U aktuálního příkazu došlo k závažné chybě. Případné výsledky by měly být zahozeny.
Příčina
Během fáze optimalizace dotazu se SQL Server pokouší vypočítat mohutnosti na přechodných výsledcích různých fází dotazu, například zřetězení. Vzhledem k tomu, že řešení konfliktů kolace probíhá na samém konci, optimalizátor dotazů o tom nemusí vědět a pokusí se provést výpočet mohutnosti zřetězení na vstupu s konfliktním kolací.
Řešení
Tento problém je opravený v následujících kumulativních aktualizacích pro SQL Server:
Kumulativní aktualizace 8 pro SQL Server 2016 SP1
Kumulativní aktualizace 4 pro SQL Server 2017
Kumulativní aktualizace 9 pro SQL Server 2014 SP2
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 2016
Nejnovější kumulativní aktualizace pro SQL Server 2017
Nejnovější kumulativní aktualizace pro SQL Server 2014
Stav
Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.
Reference
Podívejte se na informace o terminologii, kterou společnost Microsoft používá k popisování aktualizací softwaru.