Проблемы
Предположим, что вы создали сохраненную процедуру, использующую курсор на табличной переменной в 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 может возникнуть нарушение прав доступа, и появляются сообщения об ошибках, похожие на приведенные ниже.
Сообщение 596, уровень 21, состояние 1Cannot продолжит выполнение, так как сеанс находится в состоянии Kill. В текущей команде возникла ошибка, связанная с сообщением 0, уровнем 20, состояние 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 с пакетом обновления 1 (SP1)
-
Накопительное обновление 2 для SQL Server 2012 с пакетом обновления 3 (SP3)
-
Накопительное обновление 11 для SQL Server 2012 с пакетом обновления 2 (SP2)
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Ссылки
Ознакомьтесь с терминологией , которую корпорация Майкрософт использует для описания обновлений программного обеспечения.