Przejdź do głównej zawartości
Pomoc techniczna
Zaloguj się przy użyciu konta Microsoft
Zaloguj się lub utwórz konto.
Witaj,
Wybierz inne konto.
Masz wiele kont
Wybierz konto, za pomocą którego chcesz się zalogować.

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.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?
Jeśli naciśniesz pozycję „Wyślij”, Twoja opinia zostanie użyta do ulepszania produktów i usług firmy Microsoft. Twój administrator IT będzie mógł gromadzić te dane. Oświadczenie o ochronie prywatności.

Dziękujemy za opinię!

×