Symptomen
Er kan een beweringsfout optreden wanneer Microsoft SQL Server herhaaldelijk een opgeslagen procedure uitvoert die het volgende uitvoert:
- Neemt een groot object, zoals varchar(max) of varbinary(max), als een argument, en
- Hiermee maakt u een tijdelijke tabel die is afgestemd op de uitvoering van de procedure, en
- Hiermee wordt het argument groot object in de tijdelijke tabel gebruikt.
De beweringsfout die op de volgende lijkt, kunt u vinden in het foutenlogboek van SQL Server:
Datum/tijd SPID Fout: 17065, ernst: 16, toestand: 1.
Datum/tijd SPID SQL Server-bevestiging: File: FilePath\FileName, line = LineNumber Failed Assertion = 'fFalse' Poging om toegang te krijgen tot verlopen blobingang (1). Deze fout kan betrekking hebben op de timing. Als de fout zich blijft voordoen nadat de instructie opnieuw is uitgevoerd, gebruikt u DBCC CHECKDB om de database te controleren op structurele integriteit, of start u de server opnieuw op om ervoor te zorgen dat gegevensstructuren in het geheugen niet beschadigd zijn.
Datum/tijd SPID Fout: 3624, ernst: 20, toestand: 1.
Datum/tijd SPID Een systeembevestigingscontrole is mislukt. Controleer het foutenlogboek van SQL Server voor meer informatie. Meestal wordt een beweringsfout veroorzaakt door een softwarefout of gegevensbeschadiging. Als u wilt controleren op beschadigde databases, kunt u DBCC CHECKDB uitvoeren. Als u tijdens de installatie hebt afgesproken om dumps naar Microsoft te verzenden, wordt er een minidump naar Microsoft verzonden. Er is mogelijk een update beschikbaar van Microsoft in het nieuwste servicepack of in een hotfix van technische ondersteuning.
Oorzaak
SQL Server beschikt over interne logica om caching van query's die naar grote objecten verwijzen uit te schakelen, zodat volgende uitvoeringen niet verwijzen naar die LOB's (die zijn gemaakt tijdens eerdere uitvoeringen en daarom ongeldig zijn voor volgende uitvoeringen). Die logica had geen betrekking op het DNR-geval (Deferred Name Resolution ) in tijdelijke tabellen die ervoor zorgden dat die plannen in de cache werden opgeslagen. Het maken van tijdelijke tabellen met een bereik is duur en deze worden door SQL Server in de cache opgeslagen voor hergebruik in volgende uitvoeringen. Hierdoor worden dergelijke query's niet opnieuw samengesteld vanwege schemawijzigingen.
Meer informatie over Uitgestelde naamresolutie.
Oplossing
Dit probleem is opgelost in de volgende cumulatieve updates voor SQL Server:
Cumulatieve update 8 voor SQL Server 2016 SP1
Cumulatieve update 4 voor SQL Server 2017
Cumulatieve update 10 voor SQL Server 2014 Service Pack 2
Informatie over cumulatieve updates voor SQL Server
Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en beveiligingspatches uit de vorige build. Bekijk de meest recente cumulatieve update voor SQL Server:
Meest recente cumulatieve update voor SQL Server 2016
Meest recente cumulatieve update voor SQL Server 2017
meest recente cumulatieve updates voor SQL Server 2014
Status
Microsoft heeft bevestigd dat dit een probleem is bij de Microsoft-producten die worden vermeld in de sectie Van toepassing op.
Meer informatie
Meer informatie over de terminologie die Microsoft gebruikt om software-updates te beschrijven.