REVISIÓN: WriterLock en OLE DB Core componentes puede privar a lectores cuando WriterLock abre conexiones

Seleccione idioma Seleccione idioma
Id. de artículo: 267566 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

En el esfuerzo, un error en los componentes de servicios OLE DB puede provocar un subproceso en un bucle muy estrecho, que puede provocar 100 % de CPU y el agotamiento de subproceso.

Pueden parecer que aplicaciones como las aplicaciones de Internet Information Server (IIS), Transaction Server (MTS) y COM + ha dejado de responder (se bloquea), cuando de hecho los subprocesos restantes en el proceso obtener contexto muy poco y no se puede completar sus operaciones.

Causa

Esfuerzo los OLE DB componentes de servicios con un gran número de solicitudes de conexión puede producir contención en las tablas de hash que contienen información de conexión. Cuando se produce este conflicto, un subproceso en el proceso puede entrar un bucle for que no saldrá hasta el lanzamiento de un elemento que se mantiene por otros subprocesos en el proceso. Dado que este bucle for no contiene mucho código, se ejecuta en un bucle muy estrecho que hace que la CPU del 100 % y agota los otros subprocesos contexto, por lo que nunca se produce la versión. El bucle for no produce ocasionalmente la ejecución como debería.

Este bucle for existe en el código de WriterLock protege el acceso a las tablas hash. Si se examinan los subprocesos del proceso mientras el programa parece ha dejado de responder, se está ejecutando un subproceso en el código WriterLock y muchos otros subprocesos están en el código ReaderLock, esperando una sección crítica propiedad el subproceso WriterLock.

Solución

Para resolver este problema, obtenga el service pack más reciente para Microsoft Data Access Components 2.5. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
293312INFO: Cómo obtener la más reciente de MDAC 2.5 Service Pack
La versión en inglés de esta revisión debe tener los atributos de archivo siguientes o posteriores:
   Date      Version         Size             File name    
   ------------------------------------------------------
   5/3/00    2.510.5303.0    483,600 bytes    Oledb32.dll
				
Nota : el paquete de instalador para esta revisión (Q267566_W2K_SP1_x86_en.EXE) está diseñado para ejecutarse en plataformas de Microsoft Windows 2000 y no se ejecutará en plataformas de Microsoft Windows NT 4.0, Microsoft Windows 95 o Microsoft Windows 98. Por este motivo, el archivo de revisión independiente se proporciona así para que se puede copiar directamente a las plataformas Windows NT 4.0, Windows 95 o Windows 98. El paquete de instalador contiene el mismo archivo exacto, que tiene los atributos indicados en esta sección.


SOLUCIÓN

Para evitar este problema, deshabilite la agrupación de sesiones mediante cualquiera de los métodos siguientes:
  • Establezca el valor OLEDB_SERVICES para que el proveedor 0xfffffffc en el registro.

  • Agregar "OLE DB Services = -2" a las cadenas de conexión que utiliza la aplicación.

  • Si utiliza código puro de OLE DB, agregue código similar al siguiente a las propiedades de inicialización:

    //	OLE DB Services
    	InitProperties[0].dwPropertyID = DBPROP_INIT_OLEDBSERVICES;
    	InitProperties[0].vValue.vt = VT_I4;
    	InitProperties[0].vValue.lVal = DBPROPVAL_OS_ENABLEALL & ~ DBPROPVAL_OS_RESOURCEPOOLING;	
    					

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:" de este artículo. Este problema se corrigió por primera vez en Microsoft Data Access Components 2.5 Service Pack 2.

Propiedades

Id. de artículo: 267566 - Última revisión: lunes, 26 de septiembre de 2005 - Versión: 1.2
La información de este artículo se refiere a:
  • Microsoft OLE DB 2.5
  • Microsoft Data Access Components 2.5
Palabras clave: 
kbmt kbhotfixserver kbqfe kbbug kbcodesnippet kbfix kbmdac250sp1fix kbmdac250sp2fix kbqfe KB267566 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 267566

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com