Sintomi
Si supponga di creare una stored procedure che usa un cursore su una variabile di tabella in Microsoft SQL Server 2012 o SQL Server 2014. La stored procedure consente inoltre di aggiornare la tabella usando un'istruzione where current of insieme al cursore. Ad esempio, la stored procedure potrebbe essere simile alla seguente:
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
Quando si esegue la stored procedure tramite la sp_refreshsqlmodule stored procedure di sistema, potrebbe verificarsi una violazione di Access e potrebbe essere visualizzato un messaggio di errore simile al seguente:
Msg 596, livello 21, stato 1Cannot continuare l'esecuzione perché la sessione è nello stato Kill. Msg 0, livello 20, stato 0A si è verificato un grave errore nel comando corrente. I risultati, se presenti, devono essere eliminati.
In questa situazione, anche i registri degli errori di SQL Server vengono scritti in questi casi:
Data e ora. 730 spid51 SqlDumpExceptionHandler: processo 51 generato eccezione irreversibile 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 ora. 730 spid51 * data e ora. 730 spid51 *
Risoluzione
Informazioni sull'aggiornamento cumulativo
Questo problema è stato risolto negli aggiornamenti seguenti:
-
Aggiornamento cumulativo 13 per SQL Server 2014
-
Aggiornamento cumulativo 6 per SQL Server 2014 Service Pack 1 (SP1)
-
Aggiornamento cumulativo 2 per SQL Server 2012 Service Pack 3 (SP3)
-
Aggiornamento cumulativo 11 per SQL Server 2012 Service Pack 2 (SP2)
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. Vedere gli ultimi aggiornamenti cumulativi per SQL Server:
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.