KB3042135 - FIX: Una violazione di accesso e l'errore "Non devono essere generate eccezioni da questo codice" si verificano quando si usa SQL Server 2012 o SQL Server 2014

Si applica a
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Sintomi

Si supponga di usare Microsoft SQL Server 2012 o SQL Server 2014. Quando si verifica un deadlock in SQL Server, si riceve la seguente violazione di accesso causata dal monitoraggio deadlock:

Nota

sqldk! CSlotGroup::P shRelease
sqldk! CSlotPageMgr::Release
sqllang!commondelete
sqllang!delete[]
Sqllang! CTraceDataSTVF::InternalReleaseResources
Sqllang! TTableBase<CTraceDataSTVFInfo>::ReleaseResources
Sqllang! CTraceDataSTVF::{dtor}
Sqllang! CTraceDataSTVF::'distruttore di eliminazione scalare'
Sqlmin! CSTVFInternal::Release
Sqlmin! CQueryExecContext::~CQueryExecContext
Sqlmin! CQueryInstance::ShutdownQueryExecContext
Sqlmin! CQueryScan::ShutdownQueryExecContext
Sqlmin! CQueryScan::D estroyQueryOnException
Sqllang! CXStmtQuery::ShutdownOnException
Sqllang! CXStmtQuery::FinishOnExceptionImp
Sqllang! GetInterruptTicks
Sqllang! InterruptTicks<unsigned __int64>::LoadTicks
Sqllang! <SOS_Ticks InterruptTicks<unsigned __int64>,-3>::LoadTicks
sqllang!'CMsqlExecContext::FExecute'::'1'::catch$3
MSVCR100!_CallSettingFrame
MSVCR100!__CxxCallCatchBlock
NTDLL! RcFrameConsolidation
Sqllang! CMsqlExecContext::FExecute
Sqllang! CSQLSource::Execute
Sqllang! CStmtExecProc::XretLocalExec
Sqllang! CStmtExecProc::XretExecExecute
Sqllang! CXStmtExecProc::XretExecute
Sqllang! CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn
Sqllang! CMsqlExecContext::ExecuteStmts<1,0>
Sqllang! CMsqlExecContext::FExecute
Sqllang! CSQLSource::Execute
Sqllang! ExecuteSql
Sqllang! CSpecProc::ExecuteSpecial
Sqllang! CSpecProc::Execute
sqllang!process_request
sqllang!process_commands
sqldk! SOS_Task::P aram::Execute
sqldk! SOS_Scheduler::RunTask
sqldk! SOS_Scheduler::P rocessAttività
sqldk! SchedulerManager::WorkerEntryPoint
sqldk! SystemThread::RunWorker
sqldk! SystemThreadDispatcher::P rocessWorker
sqldk! SchedulerManager::ThreadEntryPoint
kernel32! BaseThreadInitThunk
NTDLL! RtlUserThreadStart: RtlUserThreadStart

Dopo la violazione di accesso, viene visualizzato il messaggio di errore seguente dal log degli errori di SQL Server:

Nota

< Data><Tempo>ID> spid< Utilizzo della versione 'dbghelp.dll' '4.0.5'
< Data><Tempo>ID> spid< **Thread di dump - spid = <ID>, EC = 0x0000007F8608E160
< Data><Tempo>ID> spid< ***Stack Dump inviato a <Percorso> file\<Dump FileName>.txt
< Data><Tempo>ID> spid< * *******************************************************************************
< Data><Tempo>ID> spid< *
< Data><Tempo>ID> SPID< * BEGIN STACK DUMP:
< Data><Tempo>ID> spid< * <Data><e ora>ID spid <>
< Data><Tempo>ID> spid< *
< Data><Tempo>ID> spid< * Posizione: qxcntxt.cpp:1143
< Data><Tempo> ID spid<*> Espressione: !" Nessuna eccezione dovrebbe essere sollevata da questo codice"
< Data><Tempo> spid<ID> * SPID: <ID>
< Data><Tempo>ID> spid< * ID processo: 3556
< Data><Tempo>ID> spid< *
< Data><Tempo>ID> spid< * Buffer di ingresso 37 byte -
< Data><Tempo>ID> spid< * 16 00 00 00 12 00 00 00 02 00 00 00 00 00 00 00 00 00 00
< Data><Tempo>ID> spid< * ÿÿ & 01 00 00 00 ff ff 0c 00 00 00 00 00 26 04 04 05 00 00
< Data><Tempo>ID> spid< * 00
< Data><Tempo>ID> spid< *
< Data><Tempo>ID> spid< *
...
< Data><Tempo> spid<ID> Stack Signature per il dump è 0x000000014202549F
< Data><Tempo> spid<ID> [INFO] Identità Inizio Fine | Errore di risultato dello stato Speculare Preparato LazyCommit ReadOnly | ThreadId del database delle transazioni | ReadSet, WriteSet, ScanSet, Savepoint LogSizeRq | CommitDep TotalComm Dipendente 0 Dipendente 1 Dipendente 2 Dipendente 3 Dipendente 4 Dipendente 5 Dipendente 6 Dipendente 7 | Posizione dell'area |
< Data><Tempo> ID spid<> Timeout in attesa del processo di dump esterno 11800.

< Data><Tempo>ID> spid< Errore: 17066, gravità: 16, stato: 1.
< Data><Tempo>ID> spid< SQL Server Asserzione: File: <qxcntxt.cpp>, line=1143 Asserzione fallita = '!" Il presente codice non dovrebbe sollevare eccezioni". Questo errore potrebbe essere correlato al tempo. Se l'errore persiste dopo aver rieseguito l'istruzione, usare DBCC CHECKDB per verificare l'integrità strutturale del database o riavviare il server per assicurarsi che le strutture di dati in memoria non siano danneggiate.

      

Risoluzione

Informazioni sull'aggiornamento cumulativo

Il problema è stato risolto per la prima volta nell'aggiornamento cumulativo seguente di SQL Server.

Consiglio: installare l'aggiornamento cumulativo più recente per SQL Server

Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutte le correzioni rapide e di sicurezza incluse nell'aggiornamento cumulativo precedente. È consigliabile scaricare e installare gli aggiornamenti cumulativi più recenti per SQL Server:

      

Stato

Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".