KB4054398 – JAVÍTÁS: A "SZÉTVÁLOGATÁS HIÁNYA miatt érvénytelen összehasonlítás" kiskereskedelmi állítás a 2014-es, 2016-os és 2017-es SQL Server-ben fordult elő

Hatókör
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)

Tünetek

Tegyük fel, hogy olyan lekérdezéssel rendelkezik, amely karakterláncműveleteket, például összefűzést végez a Microsoft SQL Server 2014, 2016 és 2017 CHAR vagy VARCHAR oszlopain. Vegyük például a következő esetet:

  • Az oszlopokat a hozzájuk rendelt különböző rendezésekkel fűzheti össze.
  • Ezek a rendezések összeegyeztethetetlenek egymással. Tegyük fel például, hogy egy Latin1_General_CI_AI-ként összeválogatott oszlopot Latin1_General_BIN próbál meg összefűzni.
  • Az összefűzés végeredményét a rendezési ütközés feloldása érdekében egy adott szétválogatáshoz rendeli a program (beleértve a "database_default" is).

Ebben az esetben előfordulhat, hogy az SQL Server "Érvénytelen összehasonlítás, mert nincs SZÉTVÁLOGATÁS" megállapítást kap, és a következőhöz hasonló hibaüzeneteket kaphat:

Megjegyzés

  • Hely: typinfo.cpp:LineNumber
    Kifejezés: hamis
    SPID: SPID
    Folyamatazonosító: ProcessID
    Leírás: Érvénytelen összehasonlítás a SZÉTVÁLOGATÁS HIÁNYA miatt.

  • Msg 3624, Level 20, State 1, Line LineNumber
    A rendszer érvényesítési ellenőrzése sikertelen volt. A részleteket az SQL Server hibanaplójában találja. Az érvényesítési hibát általában szoftverhiba vagy adatsérülés okozza. Az adatbázis sérülésének ellenőrzéséhez fontolja meg a DBCC CHECKDB futtatását. Ha a telepítés során elfogadta, hogy memóriaképeket küld a Microsoftnak, akkor a rendszer egy kis méretű memóriaképet küld a Microsoftnak. Lehetséges, hogy a Microsoft kibocsát egy frissítést a legújabb szervizcsomagban vagy a műszaki támogatás által kiadott gyorsjavításban.

  • Msg 596, Level 21, State 1, Line LineNumber
    A végrehajtás nem folytatható, mert a munkamenet kill állapotban van.

  • 0. üzenet, 20. szint, 0. állapot, sorszám

  • Súlyos hiba történt az aktuális parancsban.  Az esetleges eredményeket el kell vetni.

Ok

A lekérdezésoptimalizálási szakaszban az SQL Server a lekérdezés különböző szakaszainak közbenső eredményeiből próbálja kiszámítani a számosságokat, például az összefűzést. Mivel a rendezési ütközés feloldása a legvégén történik, előfordulhat, hogy a lekérdezésoptimalizáló nem tud róla, és megpróbálja végrehajtani az összefűzési számosság számítását egy ütköző rendezéssel rendelkező bemeneten.

Megoldás

A hibát az SQL Server következő összegző frissítéseiben javítottuk:

8-as összegző frissítés az SQL Server 2016 SP1-hez

4. összegző frissítés az SQL Server 2017-hez

9-es összegző frissítés az SQL Server 2014 SP2-höz

Az SQL Server összegző frissítéseinek ismertetése:

Az SQL Server minden új összegző frissítése tartalmazza az összes gyorsjavítást és minden biztonsági javítást, amely az előző kumulatív frissítésben szerepelt. Tekintse meg az SQL Server legújabb összegző frissítéseit:

Az SQL Server 2016 legújabb összegző frissítése

Az SQL Server 2017 legújabb összegző frissítése

Az SQL Server 2014 legújabb összegző frissítése

Állapot

A Microsoft megerősítette, hogy ez egy olyan probléma a Microsoft-termékekben, amely az „Érintett szolgáltatás“ című szakaszban van felsorolva.

Hivatkozások

Ismerje meg a Microsoft szoftverfrissítésekkel kapcsolatos terminológiáját.