Symptom
Ett kontroll fel kan uppstå när Microsoft SQL Server upprepade gånger kör en lagrad procedur som utför följande:
-
Tar ett stort objekt, till exempel varchar (max) eller varbinary (max), som ett argument, och
-
Skapar en tillfällig tabell som besvaras för utförandet av proceduren och
-
Använder det stora objekt argumentet i den tillfälliga tabellen.
Du kan hitta det kontroll fel som liknar följande i SQL Server-felloggen:
Datum/tid SPID -fel: 17065, allvarlighets grad: 16, State: 1.
Datum/tid SPID SQL Server Assertion: fil: filsökväg \fil namn, rad = LineNumber misslyckades Assertion = ' fFalse ' försökte få åtkomst till utgångna BLOB-handtag (1). Det här felet kan vara tidsrelaterat. Om felet kvarstår efter att du har kört instruktionen kan du använda DBCC CHECKDB för att kontrol lera databasens strukturella integritet eller starta om servern för att säkerställa att data strukturer i minnet inte är skadade.
Datum/tid SPID -fel: 3624, allvarlighets grad: 20, State: 1.
Datum/tid SPID det gick inte att kontrol lera systemet. Mer information finns i fel loggen för SQL Server. Vanligt vis orsakas ett kontroll fel av ett program fel eller skadade data. Överväg att köra DBCC CHECKDB för att kontrol lera att databasen är skadad. Om du har kommit överens om att skicka dump till Microsoft under installationen skickas en mini-dumpning till Microsoft. En uppdatering kan vara tillgänglig från Microsoft i senaste Service Pack eller i en snabb korrigering från teknisk support.
Orsak
SQL Server har en intern logik för att inaktivera cachelagring av frågor som refererar till stora objekt, så att efterföljande körningar inte refererar till de LOBs (som skapades under tidigare körningar och därför är ogiltiga för kommande körningar). Den logiken hanterade inte den uppskjutna namn upplösningen (DNR) i tillfälliga tabeller som gjorde att dessa planer har cachelagrats. Tidsbegränsade tillfälliga tabeller är dyra att skapa och SQL Server cachelagrar dem för åter användning. Detta förhindrar en omkompilering av sådana frågor på grund av schema ändringar.
Läs mer om uppskjuten namn matchning.
Lösning
Det här problemet är åtgärdat 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 10 för SQL Server 2014 Service Pack 2
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och säkerhets korrigeringar som fanns i den föregående versionen. Ta en titt på den senaste kumulativa uppdateringen för SQL Server:
Senaste kumulativa uppdateringen för SQL Server 2016
Senaste kumulativa uppdateringen för SQL Server 2017
senaste kumulativa uppdateringar för SQL Server 2014
Status
Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".
Referenser
Lär dig mer om terminologin som används av Microsoft för att beskriva program varu uppdateringar.