Symptom
Anta att du skapar en lagrad procedur som använder en markör på en tabell variabel i Microsoft SQL Server 2012 eller SQL Server 2014. Dessutom uppdaterar den lagrade proceduren tabellen med en WHERE -programsats tillsammans med markören. Den lagrade proceduren kan till exempel se ut så här:
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
När du kör den lagrade proceduren med den sp_refreshsqlmodule systemet som lagras kan ett åtkomst fel uppstå, och du kan få fel meddelanden som ser ut ungefär så här:
MSG 596, Level 21, State 1Cannot fortsätta med körningen eftersom sessionen är i Kill-tillståndet. MSG 0, nivå 20, State 0A allvarligt fel inträffade för det aktuella kommandot. Eventuella resultat ska ignoreras.
I den här situationen skrivs fel som liknar följande i fel loggarna för SQL Server:
datum tid. 730 spid51 SqlDumpExceptionHandler: process 51 skapade allvarligt undantag 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] "datum tid. 730 spid51 * datum tid. 730 spid51 *
Lösning
Kumulativ uppdaterings information
Problemet åtgärdas i följande uppdateringar:
-
Kumulativ uppdatering 13 för SQL Server 2014
-
Kumulativ uppdatering 6 för SQL Server 2014 Service Pack 1 (SP1)
-
Kumulativ uppdatering 2 för SQL Server 2012 Service Pack 3 (SP3)
-
Kumulativ uppdatering 11 för SQL Server 2012 Service Pack 2 (SP2)
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och alla säkerhets korrigeringar som ingick i den föregående kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:
Status
Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".
Referenser
Lär dig mer om terminologin som Microsoft använder för att beskriva program varu uppdateringar.