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.
- Aggiornamento cumulativo 1 per SQL Server 2014 SP1
- Aggiornamento cumulativo 7 per SQL Server 2014
- Aggiornamento cumulativo 5 per SQL Server 2012 SP2
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:
- Aggiornamento cumulativo più recente per SQL Server 2014 SP1
- Aggiornamento cumulativo più recente per SQL Server 2014
- Aggiornamento cumulativo più recente per SQL Server 2012 SP2
Stato
Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".