Sintomi
Si esegue una query SQL che contiene un'istruzione if exists in Microsoft SQL Server 2012. Se l'istruzione if exists contiene la funzione di gestione dinamica sys.dm_db_index_physical_stats, viene visualizzata una violazione di Access simile alla seguente:
Data/ora SPID # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *datetime*datetime * * * * * * * # * * * * * # * * * * * * ** * *time * * * * * * * * * * * * * * * * * * * * * * * * * * * * * data/ora SPID # * data/ora SPID # DataoraSPID # * data/oraSPID # * data/oraSPID # * eccezione Address = 000007FF7DA5614B Module (SQLMIN + 000000000000614B) dataTimeSPID # * codice di eccezione = c0000005 EXCEPTION_ACCESS_VIOLATION datae# oraSPID # * violazione di accesso si è verificato l'indirizzo di 0000000800000F04 dataoraSPID # * input buffer 510 byte-dataoraSPID # SQL_query_code#
Note
-
Se si esegue il comando DBCC CHECKDB in tale database dopo che si è verificata la violazione di Access, non viene segnalato alcun errore.
-
La violazione di Access non si verifica quando si esegue prima di tutto la query SQL. Tuttavia, la violazione di accesso si verifica ogni volta che si esegue la query SQL.
-
Se si Abilita il contrassegno di traccia 3654, la violazione di accesso non si verifica. Tuttavia, viene visualizzato l'errore seguente nella traccia:
Posizione: sosmemdbg. cpp: 2074Expression: FALSESPID: 55Process ID: 16972Description: MEMOBJ_INDEXANALYSIS--rilevata memoria non liberata. Msg 3624, livello 20, stato 1, controllo asserzione sistema linea 5A non riuscito. Per informazioni dettagliate, vedere il log degli errori di SQL Server. In genere, un errore di asserzione è causato da un bug software o da un danneggiamento dei dati. Per verificare il danneggiamento del database, provare a eseguire DBCC CHECKDB. Se si è deciso di inviare dump a Microsoft durante l'installazione, verrà inviato un mini dump a Microsoft. Un aggiornamento potrebbe essere disponibile da Microsoft nel Service Pack più recente o in un QFE dal supporto tecnico. Msg 0, livello 20, stato 0, errore di linea 0A grave si è verificato il comando corrente. I risultati, se presenti, devono essere eliminati.
Risoluzione
Per risolvere il problema, installare l' aggiornamento cumulativo 7 per SQL Server 2012 SP1. Questo problema è stato risolto per la prima volta in questo aggiornamento cumulativo.
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. Per altre informazioni, vedere l' aggiornamento cumulativo più recente per SQL Server 2012 SP1.
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Riferimenti
Vedere la terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.