KB4058565 – POPRAVKA: Greška potvrde prilikom izvršavanja uskladištene procedure koja upućuje na veliki objekat u SQL Server 2014, 2016 i 2017

Primenjuje se na
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard 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)

Simptomi

Može doći do greške u tvrdnji kada Microsoft SQL Server više puta izvršava uskladištenu proceduru koja izvršava sledeće:

  • Uzima veliki objekat, kao što je varchar(max) ili varbinary(max), kao argument i
  • Kreira privremenu tabelu koja je ograničena na izvršavanje procedure i
  • Koristi argument velikog objekta u privremenoj tabeli.

Možete da pronađete grešku u tvrdnji koja podseća na sledeću u evidenciji grešaka za SQL Server:

SPID datum/vreme Greška: 17065, Ozbiljnost: 16, Stanje: 1.

Datum/vreme SPID SQL Server tvrdnja: Datoteka: FilePath\FileName, line = LineNumber Failed Assertion = 'fFalse' Pokušaj pristupa isteklom regulatoru bloba (1). Ova greška je možda povezana sa vremenom. Ako se greška nastavi pojavljivati i posle ponovnog pokretanja instrukcije, koristite DBCC CHECKDB da biste proverili strukturni integritet baze podataka ili ponovo pokrenite server da biste se uverili da strukture podataka u memoriji nisu oštećene.

SPID datum/vreme Greška: 3624, Stepen značaja: 20, Stanje: 1.

SPID datum/vreme 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.

Uzrok

SQL Server ima internu logiku za onemogućavanje keširanja upita koji upućuju na velike objekte tako da naredna izvršavanja ne upućuju na one LOB (koji su kreirani tokom prethodnih pokretanja i stoga su nevažeći za naredna pokretanja). Ta logika nije rukovala slučajem odloženog razrešavanja imena (DNR) u privremenim tabelama koje su izazvale keširanje tih planova. Privremene tabele obuhvaćene opsegom su skupe za kreiranje, a SQL Server ih kešira za ponovnu upotrebu u narednim izvršavanjima. Ovo sprečava ponovno kompajliranje takvih upita zbog promena šeme.

Saznajte više o odloženom razrešavanju imena.

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 10 za SQL Server 2014 servisni paket 2

Osnovni podaci o kumulativnim ispravkama za SQL Server

Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne i bezbednosne ispravke koje su bile u prethodnoj reviziji. Pogledajte najnoviju kumulativnu ispravku za SQL Server:

Najnovija kumulativna ispravka za SQL Server 2016

Najnovija kumulativna ispravka za SQL Server 2017

Najnovije kumulativne ispravke 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 opis softverskih ispravki.