Iniciar sesión con Microsoft
Iniciar sesión o crear una cuenta
Hola:
Seleccione una cuenta diferente.
Tiene varias cuentas
Elija la cuenta con la que desea iniciar sesión.

Nº de error: 187868 (Mantenimiento de contenido)VSTS: 1340145

Microsoft distribuye correcciones de Microsoft SQL Server 2012 en un archivo descargable. Como las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y publicación de la actualización de todas las actualizaciones de seguridad que se incluyeron con la anterior de SQL Server 2012.

Síntomas

Imagine el siguiente escenario:

  • Crear un procedimiento almacenado que utiliza un parámetro con valores de tabla (TVP) en Microsoft SQL Server 2012.

  • Utilizar el analizador de SQL o SQL Server Extended Events para capturar el RPC: a partir de y RPC: completado eventos.

  • Ejecutar una consulta que utiliza el TVP.

  • La consulta se agota.

En este escenario, se produce un error de programador sin ofrecimiento y consultas que se ejecutan en el mismo programador se ejecutan lentamente. Además, se genera un archivo de minivolcado en la carpeta de registro de SQL Server.
Cuando se produce este problema, recibirá un mensaje de error similar al siguiente:

(0x80131904) System.Data.SqlClient.SqlException: Se agotó el tiempo de espera. El tiempo de espera caducó antes de completar la operación o el servidor no responde.
en System.Data.SqlClient.SqlInternalConnection.OnError (excepción SqlException, breakConnection Boolean)
en System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
en System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, UInt32 error)
en System.Data.SqlClient.TdsParserStateObject.ReadSni (asyncResult DbAsyncResult, TdsParserStateObject stateObj)
en System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
en System.Data.SqlClient.TdsParserStateObject.ReadByte()
en System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior cmdHandler SqlCommand, flujo de datos de SqlDataReader, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
en System.Data.SqlClient.SqlCommand.FinishExecuteReader (ds SqlDataReader, RunBehavior runBehavior, resetOptionsString de cadena)
en System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, returnStream Boolean, async Boolean)
en System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, returnStream Boolean, método de cadena, el resultado de DbAsyncResult)
en System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (resultado DbAsyncResult, methodName String, Boolean sendToPipe)
en System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
en TVPApp.Program.Main (String [] args)


El error de programador sin ofrecimiento junto con un mensaje de error similar al siguiente se graba en el registro de errores de SQL Server:

Servidor utilizando 'dbghelp.dll' versión '4.0.5' de tiempo > < fecha ><
Servidor de tiempo > < fecha >< *** no se puede obtener el contexto del subproceso para el spid #
<Date><Time> Server * *******************************************************************************
Servidor de tiempo > < fecha >< *
Servidor de tiempo > < fecha >< * volcado de pila inicial:
Servidor de tiempo > < fecha >< * < fecha >< hora > spid #
Servidor de tiempo > < fecha >< *
Servidor de tiempo > < fecha >< * programador sin ofrecimiento
Servidor de tiempo > < fecha >< *
<Date><Time> Server * *******************************************************************************
Tiempo > < fecha >< Server la firma de la pila para el volcado es 0x000000000000002C
Código de retorno de proceso de volcado externo del servidor de tiempo > < fecha >< 0 x 20000001.
Proceso de volcado externo no ha devuelto errores.
Proceso del servidor < fecha >< tiempo > 0:0:0 (0x1670) 0x0000000004EDE160 de trabajo parece estar sin ofrecimiento de programador de 5. Hora de creación del subproceso: 13014210386757. Subproceso de aprox CPU utilizada: núcleo 0 ms, Sra. utilización de proceso de usuario 70106 16%. Sistema inactivo 77%. Intervalo: ms 70140.
Proceso del servidor < fecha >< tiempo > 0:0:0 (0x1670) 0x0000000004EDE160 de trabajo parece estar sin ofrecimiento de programador de 5. Hora de creación del subproceso:

Causa

Este problema se produce debido a un error en el motor de base de datos de SQL Server 2012. Las columnas de texto en la TVP se implementan como insertar cadenas o búferes y un aumento en el número de filas aumenta el número de búferes. Sin embargo, el proceso que libera búferes es lento. Por lo tanto, se genera un error de programador sin ofrecimiento cuando suelte y reducir las operaciones de producirse.

Nota: Se ha solucionado un problema similar en el siguiente artículo de Microsoft Knowledge base. Sin embargo, el paquete de actualización acumulativa se describe en el artículo no es para un problema de tiempo de espera de consulta.

CORREGIR 2520808 : error de programador sin ofrecimiento al ejecutar una consulta que utiliza una TVP en SQL Server 2008 o en SQL Server 2008 R2 si se utiliza el analizador de SQL o SQL Server Extended Events

Solución

Información de actualización acumulativa

Paquete 5 de actualización acumulativa para el Service Pack 1 (SP1) de SQL Server 2012

En primer lugar, la corrección para este problema se publicó en 5 de actualización acumulativa. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2012, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

Paquete 5 de actualización de 2861107 acumulativa para SQL Server 2012Nota: Como las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2012. Le recomendamos que considere aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:

2772858 the SQL Server 2012 generaciones que se publicaron después del lanzamiento de Service Pack 1 de SQL Server 2012

Solución alternativa

Para evitar este problema, utilice uno de los métodos siguientes:

  • No utilice el analizador de SQL o SQL Server Extended Events.

  • Haga clic para desactivar la RPC: a partir de y RPC: completado casillas de verificación en la definición de traza.

Más información

Esta revisión no se aplica a SQL Server 2008 o SQL Server 2008 R2 cuando se publicó este artículo de KB. Si los usuarios reciben el mismo problema en SQL Server 2008 o SQL Server 2008 R2 incluso después de que los usuarios apliquen el paquete que se describe en el siguiente artículo, valide si no hay un tiempo de espera de la consulta y determinar si se puede resolver el tiempo de espera. De lo contrario, envíe una solicitud para aplicar esta revisión para SQL Server 2008 o SQL Server 2008 R2.

CORREGIR 2520808 : error de programador sin ofrecimiento al ejecutar una consulta que utiliza una TVP en SQL Server 2008 o en SQL Server 2008 R2 si se utiliza el analizador de SQL o SQL Server Extended Events

Información de la pila de llamadas

sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FLookup+0x29sqlmin!CCheckReadersAndWriters::Release+0x69
sqlmin!CMainIlb::{dtor}+0x3d
sqlmin!CMainIlb::`scalar deleting destructor'+0x3d
sqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13
sqlmin!CMainIlb::Release+0xf0
sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80
sqllang!CTraceTvpData::{dtor}+0x14
sqllang!CTraceTvpData::`scalar deleting destructor'+0x1e
sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x33
sqllang!CRpcTraceHelper::~CRpcTraceHelper+0x70
sqllang!CRPCExecEnv::~CRPCExecEnv+0x2ab
sqllang!CRPCExecEnv::`scalar deleting destructor'+0x14
sqllang!process_request+0x10b1
sqllang!process_commands+0x51c
sqldk!SOS_Task::Param::Execute+0x21e
sqldk!SOS_Scheduler::RunTask+0xa8
sqldk!SOS_Scheduler::ProcessTasks+0x299
sqldk!SchedulerManager::WorkerEntryPoint+0x261
sqldk!SystemThread::RunWorker+0x8f
sqldk!SystemThreadDispatcher::ProcessWorker+0x3c8
sqldk!SchedulerManager::ThreadEntryPoint+0x236
kernel32!BaseThreadInitThunk+0xd
ntdll!RtlUserThreadStart+0x1d
sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FDelete+0x34sqlmin!CCheckReadersAndWriters::Release+0xfb
sqlmin!CMainIlb::{dtor}+0x3d
sqlmin!CMainIlb::`scalar deleting destructor'+0x3d
sqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13
sqlmin!CMainIlb::Release+0xf0
sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80
sqllang!CTraceTvpData::{dtor}+0x11
sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x55
sqllang!CRpcTraceHelper::TracePostExec+0x1bf
sqllang!CRPCExecEnv::OnExecFinish+0xaa
sqllang!CProtocolHeaderInfo::{dtor}+0xffffffff`ffb158e2
sqllang!process_request+0x764
sqllang!process_commands+0x51c
sqldk!SOS_Task::Param::Execute+0x21e
sqldk!SOS_Scheduler::RunTask+0xa8
sqldk!SOS_Scheduler::ProcessTasks+0x29a
sqldk!SchedulerManager::WorkerEntryPoint+0x261
sqldk!SystemThread::RunWorker+0x8f
sqldk!SystemThreadDispatcher::ProcessWorker+0x3c8
sqldk!SchedulerManager::ThreadEntryPoint+0x236
kernel32!BaseThreadInitThunk+0x1a
ntdll!RtlUserThreadStart+0x1d

Estado

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

Author: jannaw
Writer: v-yipli
Revisor técnico: pradm; jannaw; hozhan
Editor: v-mordew

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a su experiencia?
Si presiona Enviar, sus comentarios se usarán para mejorar los productos y servicios de Microsoft. El administrador de TI podrá recopilar estos datos. Declaración de privacidad.

¡Gracias por sus comentarios!

×