Applies ToSQL Server 2012 Service Pack 3 SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Príznaky

Predpokladajme, že vytvoríte uloženú procedúru, ktorá používa kurzor na premennej tabuľky v Microsoft SQL Server 2012 alebo SQL Server 2014. Okrem toho uložená procedúra aktualizuje tabuľku pomocou aktuálne vyjadrenia, kde sa nachádza spolu s kurzorom. Uložená procedúra môže napríklad vyzerať takto:

CREATE PROCEDURE dbo.usp_TestSP AS  BEGIN  DECLARE @TableVar TABLE (SomeInt INT NULL) INSERT @TableVar VALUES (NULL)  DECLARE @curInt INT, @newInt INT SET @newInt = 1  DECLARE ccc CURSOR LOCAL FOR SELECT SomeInt FROM @TableVar WHERE SomeInt IS NULL  OPEN ccc  FETCH NEXT FROM ccc INTO @curInt UPDATE @TableVar SET SomeInt = @newInt WHERE CURRENT OF cccCLOSE ccc  SELECT * FROM @TableVar END 

Keď spustíte uloženú procedúru pomocou sp_refreshsqlmodule systému uloženej procedúry, môže sa vyskytnúť porušenie prístupu a môžu sa zobraziť chybové hlásenia, ktoré sa podobajú takto:

MSG 596, úroveň 21, stav 1Cannot pokračujte v prevedení, pretože relácia je v stave Kill. MSG 0, úroveň 20, stav 0A závažná chyba sa vyskytla v aktuálnom príkaze. Prípadné výsledky by mali byť zahodené.

V tejto situácii sa do denníkov chýb SQL servera zapisujú aj chyby, ktoré sa podobajú takto:

Dátumová doba. 730 spid51 SqlDumpExceptionHandler: proces 51 vygeneroval fatálna výnimka c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.date time.730 spid51 * *******************************************************************************date time.730 spid51 *date time.730 spid51 * BEGIN STACK DUMP:date time.730 spid51 * date time spid 51date time.730 spid51 *date time.730 spid51 *date time.730 spid51 * Exception Address = 00007FFC270236D5 Module(sqllang+00000000005036D5)date time.730 spid51 * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATIONdate time.730 spid51 * Access Violation occurred reading address 0000006F00620074date time.730 spid51 * Input Buffer 136 bytes -date time.730 spid51 * EXECUTE sp_refreshsqlmodule N'[dbo]. [usp_TestSP] ' Date Time. 730 spid51 * dátum time. 730 spid51 *

Riešenie

Kumulatívna aktualizácia informácií

Tento problém je vyriešený v nasledujúcich aktualizáciách:

Každá nová Kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúcej kumulatívnej aktualizácie. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:

Stav

Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.

Odkazy

Oboznámte sa s terminológiou , ktorú spoločnosť Microsoft používa na popis aktualizácií softvéru.

Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.