Síntomas
Supongamos que usa Microsoft SQL Server 2012 o SQL Server 2014. Cuando se produce un interbloqueo en SQL Server, recibe la siguiente infracción de acceso causada por el monitor de interbloqueo:
Nota
sqldk! CSlotGroup::P shRelease
sqldk! CSlotPageMgr::Release
sqllang!commondelete
sqllang!delete[]
sqllang! CTraceDataSTVF::InternalReleaseResources
sqllang! TTableBase<CTraceDataSTVFInfo>::ReleaseResources
sqllang! CTraceDataSTVF::{dtor}
sqllang! CTraceDataSTVF::'destructor de eliminación escalar'
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
Después de la infracción de acceso, recibe el siguiente mensaje de error del registro de errores de SQL Server:
Nota
<
Fecha><Hora>Id>. de spid< Con la versión "dbghelp.dll" "4.0.5"
<
Fecha><Hora>id. de> spid< **Subproceso de volcado - spid = <ID,> EC = 0x0000007F8608E160
<
Fecha><Hora>Id>. de spid< ***Volcado de pila que se envía a Ruta de acceso> al < archivo\Volcado nombreDeArchivo><.txt
<
Fecha><Hora>id. de> spid< * *******************************************************************************
<
Fecha><Hora>Id. de> SPID< *
<
Fecha><Hora>ID>. DE SPID<* INICIAR VOLCADO DE PILA:
<
Fecha><Hora>Id>. de spid< * <Fecha><y hora>Id. de spid <>
<
Fecha><Hora>Id. de> SPID< *
<
Fecha><Hora>id. de> spid< * Ubicación: qxcntxt.cpp:1143
<
Fecha><Hora>id. de> spid< * Expresión: !" Este código no debería plantear ninguna excepción"
<
Fecha><Hora> SPID<ID> * SPID: <ID>
<
Fecha><Hora>Id. de> spid< * Id. de proceso: 3556
<
Fecha><Hora>Id. de> SPID< *
<
Fecha><Hora>Id>. de spid< * Búfer de entrada 37 bytes -
<
Fecha><Hora>Id>. de SPID< * 16 00 00 00 12 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00
<
Fecha><Hora>Id>. de spid< * ÿÿ & 01 00 00 00 ff ff 0c 00 00 00 00 00 26 04 04 05 00 00
<
Fecha><Hora>Id>. de spid< * 00
<
Fecha><Hora>Id. de> SPID< *
<
Fecha><Hora>Id. de> SPID< *
...
<
Fecha><Hora>Id>. de Spid< La firma de pila para el volcado es 0x000000014202549F
<
Fecha><Hora> spid<ID> [INFO] Identidad Begin End | State Result Error Especular Preparado LazyCommit ReadOnly | Base de datos de transacciones ThreadId | ReadSet WriteSet ScanSet Savepoint LogSizeRq | CommitDep TotalComm Dependiente 0 Dependiente 1 Dependiente 2 Dependiente 3 Dependiente 4 Dependiente 5 Dependiente 6 Dependiente 7 | Ubicación del área |
<
Fecha><Hora> Tiempo de espera deltiempo> de espera del id. de SPID< para el proceso de volcado externo 11800.
<
Fecha><Hora> Errorde id>. de spid<: 17066, gravedad: 16, estado: 1.
<
Fecha><Hora>id. de> spid< SQL Server Assertion: File: <qxcntxt.cpp>, line=1143 Failed Assertion = '!" Este código no debe plantear excepciones"'. Este error puede estar relacionado con el tiempo. Si el error persiste después de volver a ejecutar la instrucción, use DBCC CHECKDB para comprobar la integridad estructural de la base de datos o reinicie el servidor para asegurarse de que las estructuras de datos en memoria no están dañadas.
Resolución
Información sobre la actualización acumulativa
Este problema se corrigió por primera vez en la siguiente actualización acumulativa de SQL Server.
- Actualización acumulativa 1 para SQL Server 2014 SP1
- Actualización acumulativa 7 para SQL Server 2014
- Actualización acumulativa 5 para SQL Server 2012 SP2
Recomendación: instalar la actualización acumulativa más reciente para SQL Server
Cada nueva actualización acumulativa para SQL Server contiene todas las revisiones y correcciones de seguridad que se incluyeron con la actualización acumulativa anterior. Se recomienda descargar e instalar las actualizaciones acumulativas más recientes para SQL Server:
- Actualización acumulativa más reciente para SQL Server 2014 SP1
- Actualización acumulativa más reciente para SQL Server 2014
- Actualización acumulativa más reciente para SQL Server 2012 SP2
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".