Applies ToSQL 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)

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.

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.