KB4058565 – JAVÍTÁS: Helyességi hiba egy tárolt eljárás végrehajtásakor, amely nagy objektumra hivatkozik a SQL Server 2014-ben, 2016-ban és 2017-ben

Hatókör
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)

Tünetek

Helyességi hiba léphet fel, amikor a Microsoft SQL Server a következő műveletet végrehajtó tárolt eljárást hajt végre:

  • Nagy méretű objektumokat (például varchar(max) vagy varbinary(max)) használ argumentumként.
  • létrehoz egy ideiglenes táblát, amelynek hatóköre az eljárás végrehajtása, és
  • A nagy objektum argumentumot használja az ideiglenes táblában.

Az alábbi állítási hiba az SQL Server hibanaplójában jelenhet meg:

Dátum/idő SPID Hiba: 17065, Súlyosság: 16, Állapot: 1.

Dátum/idő SPID SQL Server-helyességi feltétel: File: FilePath\FileName, line = LineNumber Failed Assertion = 'fFalse' Attempt to access of expired blob handle (1). Ez a hiba időzítéssel lehet kapcsolatos. Ha a hiba az utasítás újrafuttatása után sem szűnik meg, a DBCC CHECKDB függvénnyel ellenőrizze az adatbázis szerkezeti integritását, vagy indítsa újra a kiszolgálót, hogy a memóriában tárolt adatstruktúrák ne sérüljenek.

Dátum/idő SPID Hiba: 3624, Súlyosság: 20, Állapot: 1.

Dátum/idő SPID A rendszer érvényesítési ellenőrzése sikertelen volt. A részleteket az SQL Server hibanaplójában találja. Az érvényesítési hibát általában szoftverhiba vagy adatsérülés okozza. Az adatbázis sérülésének ellenőrzéséhez fontolja meg a DBCC CHECKDB futtatását. Ha a telepítés során elfogadta, hogy memóriaképeket küld a Microsoftnak, akkor a rendszer egy kis méretű memóriaképet küld a Microsoftnak. Lehetséges, hogy a Microsoft kibocsát egy frissítést a legújabb szervizcsomagban vagy a műszaki támogatás által kiadott gyorsjavításban.

Ok

Az SQL Server belső logikája letiltja a nagy objektumokra hivatkozó lekérdezések gyorsítótárba helyezését, hogy a későbbi végrehajtások ne hivatkozzanak azokra a LOB-kra (amelyeket a korábbi futtatások során hoztak létre, és ezért érvénytelenek a későbbi futtatásokhoz). Ez a logika nem kezelte az ideiglenes táblákon előforduló halasztott névfeloldás (DNR) esetét, amely miatt ezek a tervek gyorsítótárba kerültek. A hatókörrel rendelkező ideiglenes táblák létrehozása költséges, és az SQL Server gyorsítótárazza őket, hogy későbbi végrehajtások során újra felhasználhassa őket. Ez megakadályozza, hogy az ilyen lekérdezések a sémamódosítások miatt újrafordítsák.

További információ a késleltetett névfeloldásról.

Megoldás

A hibát az SQL Server következő összegző frissítéseiben javítottuk:

8-as összegző frissítés az SQL Server 2016 SP1-hez

4. összegző frissítés az SQL Server 2017-hez

10-es összegző frissítés az SQL Server 2014 Service Pack 2-höz

Az SQL Server összegző frissítéseinek ismertetése

Az SQL Server minden új összegző frissítése tartalmazza az előző buildben szereplő összes gyorsjavítást és biztonsági javítást. Tekintse meg az SQL Server legújabb összegző frissítését:

Az SQL Server 2016 legújabb összegző frissítése

Az SQL Server 2017 legújabb összegző frissítése

Az SQL Server 2014 legújabb összegző frissítései

Állapot

A Microsoft megerősítette, hogy ez egy olyan probléma a Microsoft-termékekben, amely az „Érintett szolgáltatás“ című szakaszban van felsorolva.

Hivatkozások

Ismerje meg a Microsoft szoftverfrissítésekkel kapcsolatos terminológiáját .