KB4054398 — LABOJUMS: "Nederīgs salīdzinājums, jo NAV SALĪDZINĀŠANAS" Mazumtirdzniecības apliecinājums notiek SQL Server 2014, 2016 un 2017

Attiecas uz
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)

Pazīmes

Pieņemsim, ka jums ir vaicājums, kas veic dažas virknes darbības, piemēram, konkatenāciju, kolonnās CHAR vai VARCHAR programmā Microsoft SQL Server 2014, 2016 un 2017. Apsveriet šādu scenāriju:

  • Kolonnas tiek savienotas ar dažādiem komplektiem, kas tām ir piešķirti.
  • Šīs salīdzināšanas nav savstarpēji saderīgas. Piemēram, jūs mēģināt savienot kolonnu, kas ir sašķirota kā Latin1_General_CI_AI ar Latin1_General_BIN.
  • Savienošanas gala rezultāts tiek piešķirts konkrētai salīdzināšanai (ieskaitot "database_default") kā komplektēšanas konfliktu risināšanas jautājums.

Šādā scenārijā SQL Server var atgriezt mazumtirdzniecības apliecinājumu "Nederīgs salīdzinājums, jo NAV KOMPLEKTĒŠANAS", un jums var tikt parādīti daži kļūdu ziņojumi, kas līdzīgi šim:

Piezīme

  • Atrašanās vieta: typinfo.cpp:LineNumber
    Izteiksme: false
    SPID: SPID
    Procesa ID: ProcessID
    Apraksts: Nederīgs salīdzinājums, jo NAV KOMPLEKTĒŠANAS.

  • Ziņojums 3624, 20. līmenis, 1. stāvoklis, rindas rindas numurs
    Sistēmas apliecinājuma pārbaude neizdevās. Detalizētu informāciju skatiet SQL Server kļūdu žurnālā. Parasti apgalvojuma kļūmi izraisa programmatūras kļūda vai datu bojājums. Lai pārbaudītu, vai datu bāzē nav bojājumu, apsveriet iespēju palaist DBCC CHECKDB. Ja iestatīšanas laikā piekritāt nosūtīt izmetes korporācijai Microsoft, korporācijai Microsoft tiks nosūtīta maza izmete. Microsoft atjauninājums var būt pieejams jaunākajā servisa pakotnē vai tehniskā atbalsta labojumfailā.

  • Ziņojums 596, 21. līmenis, 1. stāvoklis, rindiņas numurs
    Nevar turpināt izpildi, jo sesija ir novākšanas stāvoklī.

  • Ziņojums 0, 20. līmenis, stāvoklis 0, rindas numurs

  • Pašreizējā komandā radās nopietna kļūda.  Rezultāti, ja tādi ir, ir jāatmet.

Iemesls

Vaicājumu optimizācijas posmā SQL Server mēģina aprēķināt kardinalitātes dažādu vaicājuma posmu starpposma rezultātos, piemēram, savienošanā. Tā kā komplektēšanas konfliktu risināšana notiek pašās beigās, vaicājuma optimizētājs var to neapzināties un mēģināt aprēķināt konkatenācijas kardinālumu ievadē ar konfliktējošu komplektēšanu.

Risinājums

Šī problēma ir novērsta šādos SQL Server kumulatīvajos atjauninājumos:

8. kumulatīvais atjauninājums operētājsistēmai SQL Server 2016 SP1

SQL Server 2017 4. kumulatīvais atjauninājums

9. kumulatīvais atjauninājums operētājsistēmai SQL Server 2014 SP2

Par SQL Server kumulatīvajiem atjauninājumiem:

Katrā jaunajā SQL Server kumulatīvajā atjauninājumā ir visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā kumulatīvajā atjauninājumā. Skatiet jaunākos SQL Server kumulatīvos atjauninājumus:

Jaunākais kumulatīvais atjauninājums SQL Server 2016

Jaunākais kumulatīvais atjauninājums SQL Server 2017

Jaunākais kumulatīvais atjauninājums SQL Server 2014

Statuss

Microsoft apstiprināja, ka šī ir problēma Microsoft produktos, kas norādīti sadaļā "attiecas uz".

Atsauces

Uzziniet par terminoloģiju, ko Microsoft izmanto, lai aprakstītu programmatūras atjauninājumus.