KB4054398 - ÅTGÄRD: "Ogiltig jämförelse på grund av INGEN SORTERING" detaljhandelskontroll inträffar i SQL Server 2014, 2016 och 2017

Gäller fö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)

Symptom

Anta att du har en fråga som utför vissa strängåtgärder, till exempel sammanfogning, på CHAR- eller VARCHAR-kolumner i Microsoft SQL Server 2014, 2016 och 2017. Tänk dig följande scenario:

  • Du sammanfogar kolumner med olika sorteringar som har tilldelats till dem.
  • Dessa sorteringar är oförenliga med varandra. Du kan till exempel försöka sammanfoga en kolumn som sorteras som Latin1_General_CI_AI med Latin1_General_BIN.
  • Det slutliga resultatet av sammanfogningen tilldelas en specifik sortering (inklusive "database_default") som en fråga om konfliktlösning för sortering.

I det här scenariot kan SQL Server returnera en återförsäljarbekräftelse som anger "Ogiltig jämförelse på grund av INGEN SORTERING", och du kan få några felmeddelanden som liknar följande:

Obs

  • Plats: typinfo.cpp:LineNumber
    Uttryck: falskt
    SPID: SPID
    Process-ID: Process-ID
    Beskrivning: Ogiltig jämförelse på grund av INGEN SORTERING.

  • Msg 3624, nivå 20, status 1, radradnummer
    En systemkontroll har misslyckats. Kontrollera felloggen för SQL Server för mer information. Vanligtvis orsakas ett kontrollfel av ett programfel eller skadade data. Om du vill söka efter skadade databaser kan du köra DBCC CHECKDB. Om du gick med på att skicka dumpar till Microsoft under installationen skickas en minidump till Microsoft. En uppdatering kan vara tillgänglig från Microsoft i den senaste Service Pack-versionen eller i en snabbkorrigering från teknisk support.

  • Msg 596, nivå 21, status 1, radradnummer
    Det går inte att fortsätta körningen eftersom sessionen är i avlivningstillstånd.

  • Msg 0, nivå 20, status 0, radradnummer

  • Ett allvarligt fel uppstod på det aktuella kommandot.  Resultaten, om sådana finns, ska ignoreras.

Orsak

Under frågeoptimeringssteget försöker SQL Server beräkna kardinaliteter på mellanliggande resultat för olika steg i frågan, till exempel sammanfogningen. Eftersom lösningen av sorteringskonflikten sker i slutet kan frågeoptimeraren vara omedveten om det och försöker utföra beräkningen av kardinaliteten för sammanfogning på indata med konfliktsortering.

Lösning

Det här problemet åtgärdas i följande kumulativa uppdateringar för SQL Server:

Kumulativ uppdatering 8 för SQL Server 2016 SP1

Kumulativ uppdatering 4 för SQL Server 2017

Kumulativ uppdatering 9 för SQL Server 2014 SP2

Om kumulativa uppdateringar för SQL Server:

Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:

Senaste kumulativa uppdateringen för SQL Server 2016

Senaste kumulativa uppdateringen för SQL Server 2017

Senaste kumulativa uppdateringen för SQL Server 2014

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".

Referenser

Läs om den terminologi som Microsoft använder för att beskriva programuppdateringar.