Ознаки
Припустимо, що ви створюєте збережену процедуру, яка використовує курсор на змінну таблиці в 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, рівень 21, стан 1 не може продовжити виконання, оскільки сеанс перебуває в стані "вбити". MSG 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 Service Pack 1 (SP1)
-
Сукупне оновлення 2 для SQL Server 2012 Service Pack 3 (SP3)
-
Сукупне оновлення 11 для SQL Server 2012 із пакетом оновлень 2 (SP2)
Кожне нове Сукупне оновлення для SQL Server містить усі поточні виправлення та всі виправлення системи безпеки, які були включені до попереднього сукупного оновлення. Ознайомтеся з найновішими сукупними оновленнями для сервера SQL Server:
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".
Посилання
Відомості про термінологію , яку корпорація Майкрософт використовує для опису оновлень програмного забезпечення.