Oprava: Narušení přístupu při spuštění uložené procedury, která používá kurzor na proměnné tabulky v serveru SQL Server

DŮLEŽITÉ: Tento článek je přeložen pomocí softwaru na strojový překlad Microsoft. Nepřesný či chybný překlad lze opravit prostřednictvím technologie Community Translation Framework (CTF). Microsoft nabízí strojově přeložené, komunitou dodatečně upravované články, a články přeložené lidmi s cílem zajistit přístup ke všem článkům v naší znalostní bázi ve více jazycích. Strojově přeložené a dodatečně upravované články mohou obsahovat chyby ve slovníku, syntaxi a gramatice. Společnost Microsoft není odpovědná za jakékoliv nepřesnosti, chyby nebo škody způsobené nesprávným překladem obsahu nebo jeho použitím našimi zákazníky. Více o CTF naleznete na http://support.microsoft.com/gp/machine-translation-corrections/cs.

Projděte si také anglickou verzi článku: 3138930
Příznaky
Předpokládá vytvoření uložená procedura, která používá kurzor na proměnné tabulky v Microsoft SQL Server 2012 a SQL Server 2014. Uložená procedura také aktualizuje tabulku pomocí příkazuWHERE aktuální OF a kurzor.

Uložená procedura může vypadat například takto:
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 spuštění uložené procedury pomocí systému sp_refreshsqlmodule uložená procedura, může dojít k narušení přístupu a může se zobrazit chybové zprávy podobné následující:
Msg 596 úroveň 21 1Cannot státu pokračovat spuštění, protože relace je ve stavu dezaktivační. Zpráva 0, úroveň 20 v aktuálním příkazu došlo k závažné chybě 0A státu. Výsledky, by měly být zrušeny.

V této situaci jsou zapisovány do protokolů chyb serveru SQL také chyby podobné následujícím:
Datum time.730 spid51 SqlDumpExceptionHandler: 51 proces generované závažné výjimky c0000005 EXCEPTION_ACCESS_VIOLATION. Tento proces Probíhá ukončování serveru SQL Server.
date time.730 spid51 * *******************************************************************************
Datum time.730 spid51 *
Datum time.730 spid51 * BEGIN výpis zásobníku:
Datum time.730 spid51 * datum, čas spid 51
Datum time.730 spid51 *
Datum time.730 spid51 *
Datum time.730 spid51 * adresa výjimky = 00007FFC270236D5 Module(sqllang+00000000005036D5)
Datum time.730 spid51 * kód výjimky c0000005 EXCEPTION_ACCESS_VIOLATION =
Datum time.730 spid51 * čtení adresy 0000006F00620074 došlo k chybě narušení přístupu
Datum time.730 spid51 * vstupní vyrovnávací paměti 136 bajtů -
Datum time.730 spid51 * spuštění sp_refreshsqlmodule N'[dbo]. [usp_TestSP]'
Datum time.730 spid51 *
Datum time.730 spid51 *

Řešení

Informace o kumulativní aktualizaci.

Tento problém je vyřešen v následujících aktualizacích:
Doporučení: Nainstalujte nejnovější kumulativní aktualizaci pro SQL Server

Každé nové kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Rezervovat nejnovější kumulativní aktualizace pro SQL Server:
Prohlášení
Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".
Odkazy
Seznamte se terminologie používaná společností Microsoft k popisu aktualizací softwaru.

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 3138930 - Poslední kontrola: 05/31/2016 10:49:00 - Revize: 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 KbMtcs
Váš názor