Problemas de rendimiento y coherencia cuando se cargan determinados módulos o controladores de filtro
Versión del producto original: SQL Server
Número de KB original: 2033238, 2454053
Síntomas
Considere uno de los escenarios siguientes:
- Algunos módulos se cargan en el espacio de direcciones del proceso de SQL Server (Sqlservr.exe).
- Algunos controladores de filtro se cargan en un sistema que ejecuta componentes de SQL Server.
En los escenarios, puede experimentar problemas de degradación y coherencia del rendimiento de SQL Server Motor de base de datos.
- Informes de varios mensajes de error y condiciones relacionados con la falta de respuesta (mensaje del programador de SQL Server, como 17883, mensajes de tiempo de espera de la aplicación, bloqueo grave dentro de SQL Server).
- Respuesta lenta de SQL Server incluso si la cantidad simultánea de carga o actividad no es inusualmente pesada.
- Excepciones (como infracciones de acceso), mensajes de error críticos sobre la coherencia de la base de datos, los mensajes de aserción o la terminación inesperada del proceso.
- 100 % de uso de CPU y tiempos de recuperación largos de la base de datos cuando se usan tablas OLTP en memoria en SQL Server.
- Uso elevado de CPU para el proceso de SQL Server, especialmente el tiempo de procesador con privilegios.
- Errores inesperados o inexplicados cuando los procesos de SQL Server realizan llamadas a la API de Windows.
- Los volcados de memoria desencadenados para SQLDumper.exe pueden no completarse, lo que dificulta cualquier actividad de solución de problemas.
Debido a la naturaleza de estos problemas, la identificación de la causa principal a menudo requiere un tiempo de solución de problemas significativo y un seguimiento de bajo nivel.
Causas
Estos problemas se producen debido a las siguientes causas para los módulos y los controladores de filtro.
Módulos (DLL o EXE)
Estos problemas se producen porque las aplicaciones u otro software instalados en un servidor que ejecuta SQL Server pueden cargar determinados módulos en el proceso de SQL Server (Sqlservr.exe). Esto puede hacerse para lograr un requisito de lógica de negocios específico, una funcionalidad mejorada o una supervisión de intrusiones. Estos módulos pueden realizar actividades no admitidas que incluyen la desviación de las API importantes de Win32 y las rutinas de SQL Server y las API de riesgo de llamada. Además, algunos problemas intrínsecos dentro de estos módulos pueden provocar daños en varias estructuras de memoria necesarias para que el proceso de SQL Server funcione correctamente.
La lista de módulos (DLL) cargados en un proceso determinado se puede obtener a través de varias herramientas, como ListDlls o el Explorador de procesos.
Controladores de filtro
Los controladores de filtro se pueden instalar en un sistema como parte del programa de instalación de una aplicación para proporcionar un determinado tipo de funcionalidad. Algunos ejemplos son la protección antivirus, las copias de seguridad en línea, los servicios de cifrado y las instalaciones de compresión o desfragmentación de datos. Estos controladores de filtro se insertan en la pila de E/S de archivos de Windows para mejorar o modificar el comportamiento de las solicitudes de sistemas de archivos.
En algunas condiciones, estas solicitudes pueden tardar mucho tiempo en completarse o consumir recursos excesivos. Además, puede haber alguna forma de incompatibilidad entre los distintos controladores de filtro que están presentes en la misma pila de controladores.
SQL Server normalmente emite una gran cantidad de E/S del sistema de archivos (algunos de los cuales son mayores que el promedio). Por lo tanto, en comparación con otras aplicaciones en ejecución con menos intensidad de E/S, el problema con los controladores de filtro tendrá un impacto más grave en SQL Server.
Nota:
A diferencia de los archivos DLL insertados, los controladores de filtro (normalmente con la extensión .sys) no son visibles en los detalles de los procesos de usuario porque son entidades de kernel. Puede usar herramientas como windows integradas fltmc.exe para detectar minifiltros instalados.
Solución alternativa
Advertencia
Esta solución alternativa puede hacer que un equipo o una red sean más vulnerables a los ataques de usuarios o de software malintencionados, como los virus. No se recomienda esta solución alternativa, pero se proporciona esta información para que pueda implementar esta solución alternativa a su discreción. Use esta solución alternativa bajo su propia responsabilidad.
Para solucionar estos problemas, identifique el controlador de filtro o el módulo que está causando los problemas. A continuación, pruebe todos o uno de los métodos siguientes de forma adecuada. Para ayudarle a identificar el controlador de filtro o el módulo, consulte la lista de algunos posibles controladores de filtro y módulos para obtener más información.
- Póngase en contacto con el proveedor del módulo, el controlador de filtro o la aplicación para comprobar si hay actualizaciones. Aplique las actualizaciones disponibles.
- Configure el controlador de filtro o la aplicación asociada de tal manera que no interfiera con la carga de trabajo o las operaciones de SQL Server.
- Deshabilite la carga del controlador de filtro en el sistema.
- Configure la aplicación para que no cargue el módulo específico en el proceso de SQL Server.
- En algunas situaciones poco frecuentes, es posible que tenga que quitar el módulo o el controlador de filtro, y su aplicación asociada para restaurar la estabilidad en el proceso de SQL Server y el sistema.
Lista de controladores y módulos de filtro que pueden causar los problemas
La lista siguiente le ayuda a identificar los controladores y módulos de filtro que pueden causar los problemas de rendimiento. Puede recopilar un conjunto iterativo de datos de diagnóstico y seguimiento para los problemas.
ENTAPI.DLL
ENTAPI.DLL se carga en el proceso de SQL Server si instala McAfee VirusScan Enterprise en un servidor que ejecuta Microsoft SQL Server y, a continuación, configura este software para supervisar SQL Server. Cuando se carga este módulo, las API de Win 32 importantes también se desturan dentro del proceso de SQL Server. Si observa que este módulo se carga en el proceso de SQL Server, configure McAfee VirusScan Enterprise para excluir Sqlservr.exe de varias supervisión avanzadas, como la protección de desbordamiento del búfer.
HIPI.DLL, HcSQL.DLL, HcApi.DLL y HcThe.DLL
Estos archivos DLL se cargan en el proceso de SQL Server si instala el software mcAfee Host Intrusion Prevention en el mismo sistema que SQL Server. Si observa que este módulo se carga en el proceso de SQL Server, configure McAfee Host Intrusion Prevention para excluir Sqlservr.exe de su lista de supervisión.
SOPHOS_DETOURED.DLL, SWI_IFSLSP_64.DLL y SOPHOS_DETOURED_x64.DLL
Estos archivos DLL se cargan en el proceso de SQL Server si instala el programa Sophos Antivirus en un servidor que ejecuta SQL Server. Si observa que este módulo se carga en el proceso de SQL Server, puede configurar la subclave del Registro AppInit_Dlls para evitar cargar este módulo en el proceso de SQL Server. Para obtener más información, consulte AppInit_DLLs en Windows 7 y Windows Server 2008 R2 y archivos DLL de AppInit y arranque seguro.
PIOLEDB.DLL y PISDK.DLL
Estos archivos DLL se cargan en el proceso de SQL Server si usa el proveedor OLEDB de PI para acceder a los datos desde un servidor PI o si usa procedimientos almacenados extendidos que usan el SDK de PI. Si observa que estos módulos se cargan en el proceso de SQL Server, póngase en contacto con el proveedor de estos módulos para configurar el proveedor OLEDB como proveedor fuera de proceso. Esta configuración ayuda a evitar la necesidad de cargar estos módulos en el proceso de SQL Server.
UMPPC*.DLL y SCRIPTCONTROL*.DLL
Estos archivos DLL se cargan en el espacio de direcciones de los procesos relacionados con SQL Server si habilita la configuración de prevención de datos del modo de usuario adicional para los programas de Protección contra virus y puntos de conexión de CrowdStrike. Es posible que observe errores mientras Agente SQL Server intenta crear nuevos procesos al ejecutar trabajos. Es posible que se produzcan errores al intentar iniciar SQL Server Management Studio. También puede ver que SQL Server no puede iniciar SQLDumper.exe para generar volcados de memoria. Se recomienda ponerse en contacto con el soporte técnico de Crowdstrike con información relacionada con su problema y preguntar si hay disponible una corrección.
perfiCrcPerfMonMgr.DLL
Este archivo DLL se carga en el proceso de SQL Server si instala el cliente Trend Micro OfficeScan. Consulte la configuración de la lista de exclusión del publicador de software en Lista de exclusión de exámenes recomendados para productos de Trend Micro Endpoint.
MFEBOPK.SYS
Este controlador de filtro se usa para la
Buffer Overflow Protection
característica de McAfee VirusScan Enterprise. Si tiene habilitada esta característica, observará que sqlservr.exe está entre la lista de procesos protegidos porBuffer Overflow Protection
. Si tiene este controlador de filtro en un sistema que ejecuta SQL Server, debe realizar las acciones especificadas en la sección Solución alternativa . Para obtener más información, vea Problema de alto impacto: los servidores pueden dejar de responder debido a varios problemas.NLEMSQL64.SYS y NLEMSQL.SYS
NetLib Encryptionizer-Software instala este controlador de filtro. Cuando este controlador de filtro está instalado en un equipo que ejecuta SQL Server y realiza una copia de seguridad en un recurso compartido de red, es posible que se produzcan errores que devuelvan el error del sistema operativo 1: Función incorrecta. Para resolver este problema, póngase en contacto con el proveedor de software para obtener actualizaciones del controlador de filtro.
MFETDIK.SYS
Este controlador de filtro se usa para la
McAfee Anti-Virus Mini-Firewall
característica de los productos McAfee VirusScan Enterprise y McAfee McShield. Si tiene habilitada esta característica, observará que sqlservr.exe está entre la lista de procesos supervisados por laAnti-Virus
característica. Si tiene este controlador de filtro en un sistema que ejecuta SQL Server, debe realizar las acciones especificadas en la sección Solución alternativa . También puede considerar la posibilidad de agregar procesos de SQL Server a la lista de procesos de bajo riesgo en la configuración antivirus.
Referencia
- Tipos de controladores WDM
- Cómo desactivar temporalmente el controlador de filtro de modo kernel en Windows
- Los desvíos o técnicas similares pueden provocar comportamientos inesperados con SQL Server
- Ejecución de un objeto COM basado en DLL fuera del proceso de SQL Server
Aviso de declinación de responsabilidades sobre la información de terceros
Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.
Aviso de declinación de responsabilidades sobre la información de contacto de terceros
Microsoft proporciona información de contacto de otros proveedores para ayudarle a encontrar información adicional sobre este tema. Esta información de contacto puede cambiar sin previo aviso. Microsoft no garantiza la precisión de esta información de contacto de terceros.
Aviso de declinación de responsabilidades de soluciones e información de terceros
La información y la solución incluidas este documento representan el punto de vista actual de Microsoft Corporation sobre estos problemas en la fecha en que se publicó el artículo. Esta solución está disponible a través de Microsoft o a través de un proveedor de otro fabricante. Microsoft no recomienda en concreto ningún proveedor ni ninguna solución de otros fabricantes mencionados en este artículo. Puede haber otros proveedores u otras soluciones de terceros que no se describen en este artículo. Microsoft debe hacer frente a las condiciones del mercado en continuo cambio, pero esta información no debe interpretarse como un compromiso por parte de Microsoft. Microsoft no puede garantizar ni respaldar la exactitud de la información o de las soluciones ofrecidas por Microsoft ni por ninguno de los proveedores mencionados.
Microsoft no otorga ninguna garantía y excluye cualquier representación, garantía y condición, ya sea expresa, implícita o legal. Incluyen, entre otras, afirmaciones, garantías o condiciones de título, no infracción, condición satisfactoria, comerciabilidad y aptitud para un determinado fin con respecto a cualquier servicio, solución, producto u otro material o información. En ningún caso será Microsoft responsable de las soluciones de otros fabricantes mencionadas en este artículo.