Симптоми
Предположите, че създавате съхранена процедура, която използва курсора върху променлива на таблицата в Microsoft SQL Server 2012 или SQL Server 2014. Освен това съхранената процедура актуализира таблицата с помощта на командата " където е ток " заедно с курсора. Например вашата съхранена процедура може да прилича на следното:
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
Когато изпълнявате вашата съхранена процедура с помощта на процедурата за съхранение в sp_refreshsqlmodule системата, може да възникне нарушение на достъпа и можете да получите съобщения за грешка, които приличат на следните:
MSG 596, Level 21, State 1Cannot продължи изпълнението, тъй като Сеансът е в състояние на убийство. MSG 0, Level 20, State 0A е тежка грешка при текущата команда. Резултатите, ако има такива, трябва да бъдат отхвърлени.
В тази ситуация грешки, които приличат на следните, също се записват в регистрационните файлове за грешки на SQL Server:
дата час. 730 spid51 SqlDumpExceptionHandler: обработи 51, генерирани фатално изключение 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] дата час. 730 spid51 * дата час. 730 spid51 *
Решение
Информация за сборна актуализация
Този проблем е коригиран в следните актуализации:
-
Кумулативна актуализация 13 за SQL Server 2014
-
Сборна актуализация 6 за SQL Server 2014 Service Pack 1 (SP1)
-
Кумулативна актуализация 2 за SQL Server 2012 Service Pack 3 (SP3)
-
Сборна актуализация 11 за SQL Server 2012 Service Pack 2 (SP2)
Всяка нова сборна актуализация за SQL Server съдържа всички поправки и всички корекции на защитата, които са били включени в предишната сборна актуализация. Вижте последните сборни актуализации за SQL Server:
Състоянието
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са посочени в секцията "важи за".
Препратки
Научете повече за терминологията , която Microsoft използва, за да опише софтуерни актуализации.