Dotyczy
SQL 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)

Symptomy

Załóżmy, że użytkownik tworzy procedurę przechowywaną, która używa kursora na zmiennej tabeli w programie Microsoft SQL Server 2012 lub SQL Server 2014. Ponadto procedura składowana umożliwia zaktualizowanie tabeli przy użyciu funkcji gdzie Current instrukcji wraz z kursorem. Na przykład procedura składowana może wyglądać następująco:

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 

Po wykonaniu procedury składowanej przy użyciu procedury składowanej systemu sp_refreshsqlmodule może wystąpić naruszenie zasad dostępu i może zostać wyświetlony komunikat o błędzie podobny do następującego:

Msg 596, poziom 21, stan 1Cannot kontynuować wykonywanie, ponieważ sesja jest w stanie niszczącym. Msg 0, poziom 20, stan 0A poważny błąd wystąpił w bieżącym poleceniu. Ewentualne wyniki należy odrzucić.

W takiej sytuacji w dziennikach błędów programu SQL Server są również zapisywane błędy podobne do następujących:

Data godzina. 730 spid51 SqlDumpExceptionHandler: proces 51 spowodował wygenerowanie krytycznego wyjątku 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] "Data godzina. 730 spid51 * Data godzina. 730 spid51 *

Rozwiązanie

Informacje o aktualizacji zbiorczej

Ten problem rozwiązano w następujących aktualizacjach:

Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".

Informacje

Informacje o terminologii używanej przez firmę Microsoft do opisywania aktualizacji oprogramowania.

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.