KB3042135 - CORRECCIÓN: La infracción de acceso y el error "Este código no debe generar ninguna excepción" se producen cuando se usa SQL Server 2012 o SQL Server 2014

Se aplica 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)

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.

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:

      

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".