Simptomi
Pretpostavimo da kreirate uskladištenu proceduru koja koristi kursor na promenljivoj tabele u sistemu Microsoft SQL Server 2012 ili SQL Server 2014. Pored toga, uskladištena procedura ažurira tabelu pomoću izvoda WHERE CURRENT OF zajedno sa kursorom. Na primer, uskladištena procedura može da liči na sledeću:
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
Kada uskladištite uskladištenu proceduru pomoću uskladištene procedure sp_refreshsqlmodule sistema, može doći do kršenja prava pristupa i možete dobiti poruke o greškama koje su slične sledećim:
Msg 596, nivo 21, Država 1Cannot nastavljaju pogubljenje jer je sednica u stanju ubijanja. Msg 0, Nivo 20, ozbiljna greška stanja 0A pojavila se na trenutnoj komandi. Rezultati, ako ih ima, treba da budu odbačeni.
U ovoj situaciji, greške koje su slične sledećim zapisuje se i u evidencije grešaka sistema SQL Server:
date time.730 spid51 SqlDumpExceptionHandler: Process 51 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server prekida ovaj proces.Datum.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+000000005036D5)date time.730 spid51 * Exception Code = c00000005 EXCEPTION_ACCESS_VIOLATIONdate time.730 spid51 * Povreda pristupa se dogodila čitanje adrese 0000006F00620074date time.730 spid51 * Input Buffer 136 bytes -date time.730 spid51 * EXECUTE sp_refreshsqlmodule N'[dbo]. [usp_TestSP]'date time.730 spid51 * date time.730 spid51 *
Rešenje
Kumulativne informacije o ažuriranju
Ovaj problem je rešen u sledećim ispravkama:
-
Kumulativna ispravka 13 za SQL Server 2014
-
Kumulativna ispravka 6 za SQL Server 2014 servisni paket 1 (SP1)
-
Kumulativna ispravka 2 za SQL Server 2012 servisni paket 3 (SP3)
-
Kumulativna ispravka 11 za SQL Server 2012 servisni paket 2 (SP2)
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".
Reference
Saznajte više o terminologiji koju Microsoft koristi za opisivanje softverskih ispravki.