Symptome
Angenommen, Sie verwenden Microsoft SQL Server 2012 oder SQL Server 2014. Wenn ein Deadlock in SQL Server auftritt, erhalten Sie die folgende Zugriffsverletzung, die durch den Deadlock-Monitor verursacht wird:
Hinweis
SQLDK! CSlotGroup::P shRelease
SQLDK! CSlotPageMgr::Release
sqllang!commondelete
sqllang!delete[]
SQLLANG! CTraceDataSTVF::InternalReleaseResources
SQLLANG! TTableBase<CTraceDataSTVFInfo>::ReleaseResources
SQLLANG! CTraceDataSTVF::{dtor}
SQLLANG! CTraceDataSTVF::'scalar deleting destructor'
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 rocessTasks
SQLDK! SchedulerManager::WorkerEntryPoint
SQLDK! SystemThread::RunWorker
SQLDK! SystemThreadDispatcher::P rocessWorker
SQLDK! SchedulerManager::ThreadEntryPoint
kernel32! BaseThreadInitThunk
NTDLL! RtlUserThreadStart
Nach der Zugriffsverletzung erhalten Sie die folgende Fehlermeldung im SQL Server Fehlerprotokoll:
Hinweis
<
Datum><Zeit>SPID-ID>< Verwenden von "dbghelp.dll", Version "4.0.5"
<
Datum><Zeit>SPID-ID>< **Sicherungsthread - spid = <ID>, EC = 0x0000007F8608E160
<
Datum><Zeit>SPID-ID>< ***Senden des Stapelabbilds an <File Path>\<Dump FileName>.txt
<
Datum><Zeit>SPID-ID>< * *******************************************************************************
<
Datum><Zeit>SPID-ID>< *
<
Datum><Zeit>SPID-ID>< * BEGIN STACK DUMP:
<
Datum><Zeit>SPID-ID>< * <Datum><Uhrzeit>SPID-ID<>
<
Datum><Zeit>SPID-ID>< *
<
Datum><Zeit>SPID-ID>< * Standort: qxcntxt.cpp:1143
<
Datum><Zeit>SPID-ID>< * Ausdruck: !" Es sollten keine Ausnahmen durch diesen Code ausgelöst werden."
<
Datum><Zeit>SPID-ID>< * SPID: <ID>
<
Datum><Zeit>SPID-ID>< * Prozess-ID: 3556
<
Datum><Zeit>SPID-ID>< *
<
Datum><Zeit>SPID-ID>< * Eingabepuffer 37 Bytes –
<
Datum><Zeit>SPID>< ID * 16 00 00 00 12 00 00 00 02 00 00 00 00 00 00 00 00 00
<
Datum><Zeit> spid<ID> * ÿÿ & 01 00 00 00 ff ff 0c 00 00 00 00 00 26 04 04 05 00 00
<
Datum><Zeit>SPID-ID>< * 00
<
Datum><Zeit>SPID-ID>< *
<
Datum><Zeit>SPID-ID>< *
...
<
Datum><Zeit>SPID-ID>< Die Stapelsignatur für das Abbild ist 0x000000014202549F
<
Datum><Zeit> SPID<ID> [INFO] Identity Begin End | State Result Error Speculate Prepared LazyCommit ReadOnly | Transaktionsdatenbank ThreadId | ReadSet WriteSet ScanSet Sicherungspunkt LogSizeRq | CommitDep TotalComm Abhängig 0 Abhängig 1 Abhängig 2 Abhängig 3 Abhängig 4 Abhängig 5 Abhängig 6 Abhängig 7 | Lage der Umgebung |
<
Datum><Zeit> SPID<ID> Timeout waiting for external dump process 11800.
<
Datum><Zeit>SPID-ID-Fehler><: 17066, Schweregrad: 16, Zustand: 1.
<
Datum><Zeit> spid<ID> SQL Server Assertion: File: File: <qxcntxt.cpp>, line=1143 Failed assertion = '!" Es sollten keine Ausnahmen durch diesen Code ausgelöst werden." Dieser Fehler kann mit dem Timing zusammenhängen. Wenn der Fehler nach dem erneuten Ausführen der Anweisung weiterhin besteht, verwenden Sie DBCC CHECKDB, um die Datenbank auf strukturelle Integrität zu überprüfen, oder starten Sie den Server neu, um sicherzustellen, dass die In-Memory-Datenstrukturen nicht beschädigt sind.
Lösung
Informationen zum kumulativen Update
Das Problem wurde erstmals im folgenden kumulativen Update von SQL Server behoben.
- Kumulatives Update 1 für SQL Server 2014 SP1
- Kumulatives Update 7 für SQL Server 2014
- Kumulatives Update 5 für SQL Server 2012 SP2
Empfehlung: Installieren des neuesten kumulativen Updates für SQL Server
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und Sicherheitsfixes, die im vorherigen kumulativen Update enthalten waren. Es wird empfohlen, die neuesten kumulativen Updates für SQL Server herunterzuladen und zu installieren:
- Neuestes kumulatives Update für SQL Server 2014 SP1
- Neuestes kumulative Update für SQL Server 2014
- Neuestes kumulative Update für SQL Server 2012 SP2
Status
Microsoft hat bestätigt, dass dies ein Problem bei den Microsoft-Produkten ist, die im Abschnitt „Gilt für“ aufgeführt sind.