Sintomi
Si supponga di avere una tabella che contiene un trigger DML in Microsoft SQL Server 2008 R2, SQL Server 2012 o SQL Server 2014 e che in tale trigger si partecipa a una tabella inserita/eliminata con altre tabelle. Quando si esegue un'istruzione DML in questa tabella, potrebbe verificarsi una violazione di Access durante la compilazione del trigger e viene visualizzato l'errore seguente:
Si è verificato un grave errore nel comando corrente. I risultati, se presenti, devono essere eliminati.
Inoltre, gli errori seguenti vengono registrati nel log degli errori di SQL Server:
<data><ora> SPID # * * * il dump dello stack viene inviato in <FilePath>\SQLDumpxxx.txt<data><ora> SPID # SqlDumpExceptionHandler: Process # generated exception Fatal c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server sta terminando questo processo.<data><ora> SPID # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *<data><ora>SPID #><<><2 data><ora><5 SPID # * ><6 data><ora><9 spid #><0 data><ora><3 SPID # *><4 data><ora><7 SPID # *><8 data><ora> SPID # * Exception Address = 00000000009E4F2A Module (sqlservr + 00000000002D4F2A)<data><ora> SPID # * codice di eccezione = c0000005 EXCEPTION_ACCESS_VIOLATION<data><ora>SPID # * violazione di accesso si è verificato l'indirizzo di scrittura 0000000000000000<data><ora> SPID # * buffer di input 510 bytes-<data><ora> SPID # * SQL_query_code
Risoluzione
Il problema è stato risolto per la prima volta nel seguente aggiornamento cumulativo di SQL Server.
Aggiornamento cumulativo 1 per SQL Server 2012 SP2 /en-us/help/2976982
Aggiornamento cumulativo 2 per SQL Server 2014 /en-us/help/2967546
Aggiornamento cumulativo 10 per SQL Server 2012 SP1 /en-us/help/2954099
Aggiornamento cumulativo 12 per SQL Server 2008 R2 SP2 /en-us/help/2938478
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:
Soluzione alternativa
Per risolvere il problema, non usare la tabella inserita/eliminata direttamente in una query che la unisce ad altre tabelle, invece la memorizza nella cache in una tabella temp e usa la tabella temp nella query.
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".