Simptome
Să presupunem că creați o procedură stocată care utilizează un cursor pe o variabilă de tabel în Microsoft SQL Server 2012 sau SQL Server 2014. În plus, procedura stocată actualizează tabelul, utilizând o instrucțiune în care se află curentul , împreună cu cursorul. De exemplu, procedura stocată poate semăna cu următoarea:
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
Atunci când vă executați procedura stocată utilizând sp_refreshsqlmodule procedură stocată de sistem, se poate produce o încălcare de acces și este posibil să primiți mesaje de eroare care seamănă cu următoarele:
MSG 596, nivel 21, 1Cannot de stare continuați execuția, deoarece sesiunea este în starea Kill. MSG 0, nivel 20, s-a produs o eroare severă 0A de stat în comanda curentă. Rezultatele, dacă este cazul, ar trebui eliminate.
În această situație, erorile care seamănă cu următoarele sunt, de asemenea, scrise în jurnalele de erori SQL Server:
dată calendaristică. 730 spid51 SqlDumpExceptionHandler: proces 51 generate fatal excepție 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] "dată calendaristică. 730 spid51 * dată calendaristică. 730 spid51 *
Rezolvare
Informații despre actualizarea cumulativă
Această problemă este remediată în următoarele actualizări:
-
Actualizarea cumulativă 13 pentru SQL Server 2014
-
Actualizarea cumulativă 6 pentru SQL Server 2014 Service Pack 1 (SP1)
-
Actualizarea cumulativă 2 pentru SQL Server 2012 Service Pack 3 (SP3)
-
Actualizarea cumulativă 11 pentru SQL Server 2012 Service Pack 2 (SP2)
Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.
Referințe
Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.