Simptomi
Pretpostavimo da imate upit koji izvršava neke operacije sa niskama, na primer spajanje, na kolonama CHAR ili VARCHAR u sistemima Microsoft SQL Server 2014, 2016 i 2017. Uzmite u obzir sledeću situaciju:
- Kolone spajate sa različitim upoređivanjima koja su im dodeljena.
- Ta upoređivanja su međusobno nekompatibilna. Na primer, pokušavate da spojite kolonu koja je upoređena kao Latin1_General_CI_AI sa Latin1_General_BIN.
- Krajnji rezultat spajanja se dodeljuje određenom upoređivanju (uključujući "database_default") u cilju rešavanja neusaglašenosti upoređivanja.
U ovom scenariju, SQL Server može da vrati tvrdnju o maloprodaji koja glasi "Nevažeće poređenje zbog BEZ UPARIVANJA", a možete da dobijete i neke poruke o grešci koje izgledaju ovako:
Napomena
Lokacija: typinfo.cpp:LineNumber
Izraz: false
SPID: SPID
ID procesa: ID procesa
Opis: Nevažeće poređenje zbog BEZ UPARIVANJA.Poruka 3624, nivo 20, država 1, broj reda
Provera sistemske tvrdnje nije uspela. Detalje potražite u evidenciji grešaka za SQL Server. Do greške pri potvrđivanju obično dolazi zbog softverske greške ili oštećenja podataka. Da biste proverili da li baza podataka nije oštećena, uzmite u obzir pokretanje DBCC CHECKDB. Ako ste pristali da šaljete prikaze korporaciji Microsoft tokom instalacije, korporaciji Microsoft se šalje mali prikaz. Microsoft može da obezbedi ispravku u najnovijem servisnom paketu ili u hitnoj ispravci tehničke podrške.Poruka 596, nivo 21, stanje 1, broj reda
Nije moguće nastaviti izvršavanje jer je sesija u stanju ukidanja.poruka 0, nivo 20, stanje 0, broj reda
Došlo je do ozbiljne greške na trenutnoj komandi. Rezultate, ako postoje, treba odbaciti.
Uzrok
Tokom faze optimizacije upita, SQL Server pokušava da izračuna kardinalnosti na posrednim rezultatima različitih faza upita, na primer spajanja. Pošto se rešavanje neusaglašenosti upoređivanja vrši na samom kraju, optimizator upita možda nije svestan toga i pokušava da izvrši izračunavanje kardinalnosti spajanja na unosu sa neusaglašenim upoređivanjem.
Rešenje
Ovaj problem je rešen u sledećim kumulativnim ispravkama za SQL Server:
Kumulativna ispravka 8 za SQL Server 2016 SP1
Kumulativna ispravka 4 za SQL Server 2017
Kumulativna ispravka 9 za SQL Server 2014 SP2
Osnovni podaci o kumulativnim ispravkama za SQL Server:
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:
Najnovija kumulativna ispravka za SQL Server 2016
Najnovija kumulativna ispravka za SQL Server 2017
Najnovija kumulativna ispravka za SQL Server 2014
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku „Odnosi se na“.
Reference
Saznajte više o terminologiji koju Microsoft koristi za opisivanje softverskih ispravki.