KB4058565 - FIX: kinnitustõrge salvestatud protseduuri käivitamisel, mis viitab suurele objektile versioonides SQL Server 2014, 2016 ja 2017

Rakenduskoht
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)

Sümptomid

Kinnitustõrge võib ilmneda juhul, kui Microsoft SQL Server korduvalt käivitab salvestatud protseduuri, mis teeb järgmist.

  • Võtab argumendina suure objekti (nt varchar(max) või varbinary(max)) ja
  • Loob ajutise tabeli, mis hõlmab toimingu sooritamist, ja
  • Kasutab ajutises tabelis suurt objektiargumenti.

SQL Server tõrkelogist võite leida kinnitustõrke, mis sarnaneb järgmisega:

Kuupäeva/kellaaja SPID Tõrge: 17065, raskusaste: 16, olek: 1.

Kuupäeva/kellaaja SPID SQL Server kinnitus: fail: FilePath\FileName, rida = LineNumber Failed Assertion = 'fFalse' Katse pääseda juurde aegunud bloobipidemele (1). See tõrge võib olla ajastusega seotud. Kui tõrge ei lahene pärast lause uuesti käivitamist, kasutage andmebaasi struktuuritervikluse kontrollimiseks DBCC CHECKDB-d või taaskäivitage server, et tagada mälusiseste andmestruktuuride rikkumine.

Kuupäeva/kellaaja SPID Tõrge: 3624, raskusaste: 20, olek: 1.

Kuupäeva/kellaaja SPID Süsteemi kinnituskontroll on nurjunud. Üksikasjalikumat teavet leiate SQL Server tõrkelogist. Tavaliselt on kinnituse nurjumise põhjuseks tarkvaraviga või andmete rike. Andmebaasi rikete kontrollimiseks võiksite käivitada DBCC CHECKDB. Kui nõustusite häälestuse ajal tõmmiseid Microsoftile saatma, saadetakse Microsoftile väike tõmmis. Microsofti värskendus võib olla saadaval uusima hoolduspaketiga või tehnilise toe kiirparandusega.

Põhjus

SQL Server sisemine loogika keelab suurtele objektidele viitavate päringute vahemällu salvestamise, et järgnevad käivitamised ei viitaks neile LOB-idele (mis loodi eelnevate käituste ajal ja on seetõttu järgnevate käituste jaoks kehtetud). See loogika ei käsitlenud viitnimelahenduse (DNR) juhtumit ajutistes tabelites, mis põhjustasid nende plaanide vahemällu salvestamise. Ulatusega ajutised tabelid on kulukad ja SQL Server salvestab need hilisemates käivitamistes uuesti kasutamiseks vahemällu. See takistab selliste päringute kompileerimist skeemimuudatuste tõttu.

Lisateave edasilükatud nime eraldusvõime kohta.

Lahendus

See probleem on lahendatud järgmistes SQL Server koondvärskendustes.

SQL Server 2016 SP1 koondvärskendus 8

SQL Server 2017 koondvärskendus 4

SQL Server 2014 hoolduspaketi Service Pack 2 koondvärskendus 10

Teave SQL Server koondvärskenduste kohta

Iga uus koondvärskendus SQL Server sisaldab kõiki eelmise järgu kiirparandusi ja turbeparandusi. Vaadake uusimat SQL Server koondvärskendust.

Uusim koondvärskendus SQL Server 2016 jaoks

Uusim koondvärskendus SQL Server 2017 jaoks

uusimad koondvärskendused SQL Server 2014 jaoks

Olek

Microsoft on kinnitanud, et see on jaotises „Rakenduskoht“ loetletud Microsofti toodete korral esinev probleem.

Viited

Siit leiate teavet microsofti tarkvaravärskenduste terminoloogia kohta.