FIX: Violazione di accesso quando si esegue una stored procedure che utilizza un cursore su una variabile di tabella in SQL Server

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 3138930
Sintomi
Si supponga di crea una stored procedure che utilizza un cursore su una variabile di tabella in Microsoft SQL Server 2012 o SQL Server 2014. Inoltre, la stored procedure aggiorna la tabella utilizzando l'istruzioneWHERE CURRENT OF con il cursore.

Ad esempio, la stored procedure può simile al 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 utilizzando il sistema sp_refreshsqlmodule stored procedure, potrebbe verificarsi una violazione di accesso, e si possono ricevere messaggi di errore analoghi ai seguenti:
Msg 596, livello 21, 1Cannot stato continuare l'esecuzione della sessione è in stato di interruzione. Msg 0, livello 20, stato 0A grave errore del comando corrente. I risultati, se presenti, devono essere eliminati.

In questo caso, gli errori analoghi ai seguenti vengono scritti anche i log degli errori di SQL Server:
Data time.730 spid51 SqlDumpExceptionHandler: 51 processo generato l'eccezione irreversibile c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server, il processo verrà terminato.
date time.730 spid51 * *******************************************************************************
Data spid51 di time.730 *
Data spid51 di time.730 * inizio DUMP dello STACK:
Data spid51 di time.730 * data ora spid 51
Data spid51 di time.730 *
Data spid51 di time.730 *
Data spid51 di time.730 * indirizzo eccezione = 00007FFC270236D5 Module(sqllang+00000000005036D5)
Data spid51 di time.730 * codice eccezione = c0000005 EXCEPTION_ACCESS_VIOLATION
Data spid51 di time.730 * violazione di accesso durante la lettura di indirizzo 0000006F00620074
Data spid51 di time.730 * byte di Input Buffer 136 -
Data spid51 di time.730 * sp_refreshsqlmodule EXECUTE N'[dbo]. [usp_TestSP]'
Data spid51 di time.730 *
Data spid51 di time.730 *

Risoluzione

Informazioni sull'aggiornamento cumulativo

Questo problema viene risolto nei seguenti aggiornamenti:
Raccomandazioni: Installare l'aggiornamento cumulativo più recente per SQL Server

Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutte le correzioni di protezione che sono stati incluse nell'aggiornamento cumulativo precedente. Estrarre gli ultimi aggiornamenti cumulativi per SQL Server:
Status
Microsoft ha confermato che questo è un problema per i prodotti Microsoft elencati nella sezione "Si applica a".
Riferimenti
Per ulteriori informazioni, vedere la terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 3138930 - Ultima revisione: 05/31/2016 10:12:00 - Revisione: 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 KbMtit
Feedback