KB4054398 – OPRAVA: V rokoch SQL Server 2014, 2016 a 2017 sa vyskytuje predbežné označenie "Neplatné porovnanie z dôvodu ŽIADNEHO ZORADENIA"

Vzťahuje sa na
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 Standard on Windows SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2016 Service Pack 1 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)

Príznaky

Predpokladajme, že máte dotaz, ktorý vykonáva niektoré operácie reťazca, napríklad reťazenie, v stĺpcoch CHAR alebo VARCHAR v Microsoft SQL Server 2014, 2016 a 2017. Pozrite si nasledujúci scenár:

  • Zreťazíte stĺpce s rôznymi zoradeniami, ktoré sú k nim priradené.
  • Tieto zoradenia sú navzájom nekompatibilné. Pokúsite sa napríklad zreťaziť stĺpec, ktorý je zoradený ako Latin1_General_CI_AI s Latin1_General_BIN.
  • Konečný výsledok reťazenia sa v rámci riešenia konfliktu zoradenia priradí ku konkrétnemu zoradeniu (vrátane database_default).

V tomto scenári môže SQL Server vrátiť maloobchodné tvrdenie, ktoré uvádza "Neplatné porovnanie z dôvodu ŽIADNEHO ZORADENIA", a môžu sa zobraziť niektoré chybové hlásenia, ktoré sú podobné nasledujúcemu:

Poznámka

  • Miesto: typinfo.cpp:LineNumber
    Výraz: false
    SPID: SPID
    ID procesu: ProcessID
    Popis: Neplatné porovnanie z dôvodu ŽIADNE ZORADENIE.

  • Msg 3624, Level 20, State 1, Line LineNumber
    Kontrola kontrol kontrol systémových kontrol zlyhala. Podrobnosti nájdete v denníku chýb SQL Server. Zlyhanie tvrdenia zvyčajne spôsobuje softvérová chyba alebo poškodenie údajov. Ak chcete skontrolovať poškodenie databázy, zvážte spustenie DBCC CHECKDB. Ak ste počas inštalácie súhlasili s odosielaním výpisov do spoločnosti Microsoft, spoločnosti Microsoft sa odošle minivýpis. Aktualizácia môže byť k dispozícii od spoločnosti Microsoft v najnovšom balíku Service Pack alebo v rýchlej oprave od technickej podpory.

  • Msg 596, Level 21, State 1, Line LineNumber
    Nie je možné pokračovať v vykonávaní, pretože relácia je v stave ukončenia.

  • Msg 0, Level 20, State 0, Line LineNumber

  • V aktuálnom príkaze sa vyskytla závažná chyba.  Prípadné výsledky by sa mali zahodiť.

Príčina

Počas fázy optimalizácie dotazu sa SQL Server pokúsi vypočítať kardinalitu na základe medzivýsledkov rôznych etáp dotazu, napríklad reťazenia. Keďže riešenie konfliktu zoradenia sa uskutočňuje na samom konci, optimalizátor dotazov si toho nemusí byť vedomý a pokúša sa vykonať výpočet kardinality reťazenia na vstupe s konfliktným zoradením.

Riešenie

Tento problém je opravený v nasledujúcich kumulatívnych aktualizáciách pre SQL Server:

Kumulatívna aktualizácia 8 pre SQL Server 2016 SP1

Kumulatívna aktualizácia 4 pre SQL Server 2017

Kumulatívna aktualizácia 9 pre SQL Server 2014 SP2

Informácie o kumulatívnych aktualizáciách pre SQL Server:

Každá nová kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchle opravy a opravy zabezpečenia, ktoré boli zahrnuté v predchádzajúcej kumulatívnej aktualizácii. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:

Najnovšia kumulatívna aktualizácia pre SQL Server 2016

Najnovšia kumulatívna aktualizácia pre SQL Server 2017

Najnovšia kumulatívna aktualizácia pre SQL Server 2014

Stav

Spoločnosť Microsoft potvrdila, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v časti Vzťahuje sa na.

Odkazy

Získajte informácie o terminológii, ktorú Microsoft používa na popis aktualizácií softvéru.