KB4054398 – PATAISA: "Netinkamas palyginimas dėl NĖRA GRETINIMO" mažmeninės prekybos patvirtinimas pasirodo 2014, 2016 ir 2017 „SQL Server“

Taikoma
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)

Požymiai

Tarkime, kad turite užklausą, kuri atlieka tam tikras eilutės operacijas, pvz., sujungimą, stulpeliuose CHAR arba VARCHAR "Microsoft „SQL Server“ 2014", 2016 ir 2017. Apsvarstykite šį scenarijų:

  • Stulpeliai sujungiami naudojant skirtingus jiems priskirtus sugretinimus.
  • Šie sugretinimai nesuderinami vienas su kitu. Pavyzdžiui, bandote sujungti stulpelį, kuris sugretintas kaip Latin1_General_CI_AI su Latin1_General_BIN.
  • Galutinis sujungimo rezultatas priskiriamas konkrečiam sugretinimui (įskaitant "database_default"), kaip sugretinimo neatitikimo sprendimo klausimas.

Tokiu atveju "„SQL Server“" gali grąžinti mažmeninės prekybos teiginį, kuriame nurodoma "Netinkamas palyginimas dėl NĖRA GRETINIMO", ir galite gauti klaidų pranešimus, panašius į šiuos:

Pastaba

  • Vieta: typinfo.cpp:LineNumber
    Išraiška: false
    SPID: SPID
    Proceso ID: Proceso ID
    Aprašas: Netinkamas palyginimas, nes NĖRA GRETINIMO.

  • Pranešimas 3624, 20 lygis, 1 būsena, eilutės numeris
    Sistemos patvirtinimo patikra nepavyko. Išsamios informacijos ieškokite „SQL Server“ klaidų žurnale. Paprastai patvirtinimo triktį sukelia programinės įrangos klaida arba duomenų sugadinimas. Norėdami patikrinti, ar duomenų bazė nesugadinta, paleiskite DBCC CHECKDB. Jei sąrankos metu sutikote siųsti iškeltis "„Microsoft“", "„Microsoft“" bus nusiųsta mini iškeltis. Naujinimas gali būti gautas iš "„Microsoft“" naujausiame pakeitimų pakete arba techninio palaikymo tarnybos karštojoje pataisoje.

  • Pranešimas 596, 21 lygis, 1 būsena, eilutės eilutės numeris
    Negalima tęsti vykdymo, nes seansas yra nužudymo būsenos.

  • Pranešimas 0, 20 lygis, būsena 0, eilutės numeris

  • Dabartinėje komandoje įvyko rimta klaida.  Rezultatus, jei tokių yra, reikia atmesti.

Priežastis

Užklausų optimizavimo etape „SQL Server“ bando apskaičiuoti įvairių užklausos etapų tarpinių rezultatų, pavyzdžiui, sujungimo, kardinalumą. Kadangi sugretinimo neatitikimų sprendimas vyksta pačioje pabaigoje, užklausų optimizavimo priemonė gali to nežinoti ir bando atlikti sujungimo kardinalumo skaičiavimą įvestyje su nesuderinamu sugretinimu.

Sprendimas

Ši problema išspręsta šiuose kaupiamuosiuose "„SQL Server“" naujinimuose:

8 kaupiamasis naujinimas, skirtas „SQL Server“ 2016 SP1

4 kaupiamasis naujinimas, skirtas „SQL Server“ 2017

9 kaupiamasis naujinimas, skirtas „SQL Server“ 2014 SP2

Apie "„SQL Server“" kaupiamuosius naujinimus:

Kiekviename naujame „SQL Server“ kaupiamajame naujinime yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnį kaupiamąjį naujinimą. Peržiūrėkite naujausius "„SQL Server“" kaupiamuosius naujinimus:

Naujausias kaupiamasis naujinimas, skirtas „SQL Server“ 2016

Naujausias "„SQL Server“ 2017" kaupiamasis naujinimas

Naujausias "„SQL Server“ 2014" kaupiamasis naujinimas

Būsena

„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.

Nuorodos

Sužinokite daugiau apie terminus, kuriuos „„Microsoft““ naudoja apibūdindama programinės įrangos naujinimus.