Symptom
Ett kontrollfel kan uppstå när Microsoft SQL Server upprepade gånger kör en lagrad procedur som utför följande:
- Tar ett stort objekt, t.ex . varchar(max) eller varbinary(max), som ett argument, och
- skapar en temporär tabell som är begränsad till utförandet av proceduren och
- Använder argumentet stort objekt i den tillfälliga tabellen.
Du kan hitta kontrollfelet som liknar följande i felloggen för SQL Server:
Datum/tid SPID Fel: 17065, Allvarlighetsgrad: 16, Tillstånd: 1.
Datum/tid SPID SQL Server Assertion: File: FilePath\FileName, line = LineNumber Failed Assertion = 'fFalse' Försök att komma åt utgångna blobreferenser (1). Det här felet kan vara tidsrelaterat. Om felet kvarstår efter att instruktionen har körts på nytt använder du DBCC CHECKDB för att kontrollera om det finns strukturell integritet i databasen eller startar om servern för att säkerställa att datastrukturerna i minnet inte är skadade.
Datum/tid SPID Fel: 3624, Allvarlighetsgrad: 20, Tillstånd: 1.
Datum/tid SPID En systemkontroll har misslyckats. Kontrollera felloggen för SQL Server för mer information. Vanligtvis orsakas ett kontrollfel av ett programfel eller skadade data. Om du vill söka efter skadade databaser kan du köra DBCC CHECKDB. Om du gick med på att skicka dumpar till Microsoft under installationen skickas en minidump till Microsoft. En uppdatering kan vara tillgänglig från Microsoft i den senaste Service Pack-versionen eller i en snabbkorrigering från teknisk support.
Orsak
SQL Server har 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 efterföljande körningar). Den logiken hanterade inte fallet med uppskjuten namnmatchning (DNR) på tillfälliga tabeller som gjorde att dessa planer cachelagrades. Begränsade temporära tabeller är dyra att skapa och SQL Server cachelagrar dem för återanvändning i efterföljande körningar. Detta förhindrar omkompilering av sådana frågor på grund av schemaändringar.
Läs mer om uppskjuten namnmatchning.
Lösning
Det här problemet åtgärdas 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
Om kumulativa uppdateringar för SQL Server
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och säkerhetskorrigeringar som fanns i föregående version. Kolla in 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 detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".
Referenser
Läs mer om den terminologi som Microsoft använder för att beskriva programuppdateringar.