Poprawka: Naruszenie zasad dostępu, podczas wykonywania procedury przechowywanej, która korzysta z kursora w zmiennej tabeli w programie SQL Server

WAŻNE: Ten artykuł został przetłumaczony przy użyciu oprogramowania firmy Microsoft do tłumaczenia maszynowego i może być poprawiony przy użyciu technologii Community Translation Framework (CTF). Firma Microsoft udostępnia artykuły tłumaczone maszynowo, poprawione przez społeczność, a także tłumaczone przez tłumaczy profesjonalnych, aby zapewnić dostęp do wszystkich artykułów w bazie wiedzy w wielu językach. Artykuły tłumaczone maszynowo i poprawione mogą zawierać błędy pisowni, składniowe i gramatyczne. Firma Microsoft nie ponosi odpowiedzialności za żadne nieścisłości, błędy ani szkody spowodowane przez niepoprawne tłumaczenia zawartości ani przez korzystanie z niej przez klientów. Więcej o strukturze CTF: http://support.microsoft.com/gp/machine-translation-corrections/pl.

Anglojęzyczna wersja tego artykułu to: 3138930
Symptomy
Załóżmy, że można utworzyć procedurę przechowywaną, która korzysta z kursora w zmiennej tabeli w 2014 r. programu SQL Server lub Microsoft SQL Server 2012. Ponadto procedura składowana aktualizuje tabelę przy użyciu instrukcjiWHERE CURRENT OF wraz z kursora.

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 przechowywanej za pomocą systemu sp_refreshsqlmodule procedura przechowywana, może wystąpić błąd naruszenia zasad dostępu, i może odbierać komunikaty o błędach podobne do następujących:
Msg 596, poziom 21, Państwo 1Cannot kontynuować wykonywanie, ponieważ sesja jest w stanie "zabicia". Msg 0, poziom 20, stan 0A wystąpił poważny błąd bieżącego polecenia. Wyniki, jeśli w ogóle, powinny zostać odrzucone.

W tej sytuacji błędy podobne do następujących są także zapisywane w dziennikach błędów programu SQL Server:
Data time.730 spid51 SqlDumpExceptionHandler: 51 proces wygenerowany wyjątek krytyczny c0000005 EXCEPTION_ACCESS_VIOLATION. Program SQL Server kończy ten proces.
date time.730 spid51 * *******************************************************************************
Data time.730 spid51 *
Data time.730 spid51 * rozpocząć ZRZUT STOSU:
Data time.730 spid51 * Data Godzina spid 51
Data time.730 spid51 *
Data time.730 spid51 *
Data time.730 spid51 * adres wyjątku = 00007FFC270236D5 Module(sqllang+00000000005036D5)
Data time.730 spid51 * kod wyjątku c0000005 EXCEPTION_ACCESS_VIOLATION =
Data time.730 spid51 * wystąpiło naruszenie zasad dostępu do czytania adres 0000006F00620074
Data time.730 spid51 * Input buforu 136 bajtów -
Data time.730 spid51 * EXECUTE sp_refreshsqlmodule N'[dbo]. [usp_TestSP] "
Data time.730 spid51 *
Data time.730 spid51 *

Rozwiązanie

Informacje dotyczące zbiorczej aktualizacji

Ten problem został rozwiązany w następujących aktualizacji:
Zalecenie: Zainstalować najnowszą aktualizację zbiorczą dla programu SQL Server

Każda nowa aktualizacja zbiorcza dla programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały zawarte w poprzedniej zbiorczej aktualizacji. Sprawdź najnowsze aktualizacje zbiorcze dla programu SQL Server:
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.
Materiały referencyjne
Dowiedz się więcej o terminologia używaną przez firmę Microsoft do opisywania aktualizacji oprogramowania.

Właściwości

Identyfikator artykułu: 3138930 — ostatni przegląd: 05/31/2016 09:28:00 — zmiana: 3.0

Microsoft SQL Server 2012 Service Pack 3, Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3138930 KbMtpl
Opinia