加载某些模块或筛选器驱动程序时的性能和一致性问题

原始产品版本:SQL Server
原始 KB 编号: 2033238、2454053

症状

请考虑以下方案之一:

  • 某些模块将加载到SQL Server进程地址空间 (Sqlservr.exe) 。
  • 某些筛选器驱动程序将加载到运行SQL Server组件的系统中。

在这种情况下,可能会遇到SQL Server数据库引擎的性能下降和一致性问题。

  • 报告各种与无响应相关的错误消息和条件 (SQL Server 计划程序消息,例如 17883、应用程序超时消息、SQL Server) 内的严重阻塞。
  • 即使并发负载或活动量不是异常繁重,SQL Server响应速度也较慢。
  • 异常 (,例如访问冲突) 、有关数据库一致性的关键错误消息、断言消息或意外进程终止。
  • 在 SQL Server 中使用 In-Memory OLTP 表时,CPU 利用率为 100%,数据库恢复时间较长。
  • SQL Server进程的 CPU 使用率较高,尤其是特权处理器时间。
  • 当SQL Server进程进行 Windows API 调用时出现意外或无法解释的故障。
  • 为 SQLDumper.exe 触发的内存转储可能无法完成,从而阻碍任何故障排除活动。

由于这些问题的性质,根本原因识别通常需要大量的故障排除时间和低级别的跟踪。

原因

出现这些问题的原因是模块和筛选器驱动程序的以下原因。

模块 (DLL 或 EXE)

出现这些问题的原因是,在运行SQL Server的服务器上安装的应用程序或其他软件可以将某些模块加载到SQL Server进程 (Sqlservr.exe) 。 这样做是为了达到特定的业务逻辑要求、增强的功能或入侵监视。 这些模块可能会执行不支持的活动,这些活动包括绕行重要的 Win32 API 和SQL Server例程,以及调用有风险的 API。 此外,这些模块中的某些内部问题可能会导致各种内存结构损坏,这些结构是SQL Server进程正常运行所必需的。

可以通过各种工具(如 ListDlls进程资源管理器)获取在给定进程中加载) (DLL 的模块列表。

筛选器驱动程序

筛选器驱动程序 可以作为应用程序的安装程序的一部分安装在系统上,以提供某种功能。 示例包括防病毒保护、联机备份、加密服务以及数据压缩或碎片整理工具。 这些筛选器驱动程序将自身插入到 Windows 文件 I/O 堆栈中,以增强或更改文件系统请求的行为。

在某些情况下,这些请求可能需要很长时间才能完成或消耗过多的资源。 此外,同一驱动程序堆栈中存在的不同筛选器驱动程序之间可能存在某种形式的不兼容。

SQL Server通常发出大量文件系统 I/O (其中一些比平均) 大。 因此,与其他 I/O 强度较低的正在运行的应用程序相比,筛选器驱动程序的问题将对SQL Server产生更严重的影响。

注意

与注入的 DLL 不同,筛选器驱动程序 (通常带有 .sys 扩展) 在用户进程详细信息中不可见,因为它们是内核实体。 可以使用 Windows 内置 fltmc.exe 等工具来发现已安装的微筛选器。

解决方法

警告

此解决方法可能使计算机或网络更容易受到恶意用户或病毒等恶意软件的攻击。 我们不建议使用此解决方法,但会提供此信息,以便你可以自行决定实现此解决方法。 如果使用此解决方法,需自行承担风险。

若要解决这些问题,请确定导致问题的筛选器驱动程序或模块。 然后,适当地尝试以下所有或其中一种方法。 为了帮助你识别筛选器驱动程序或模块,检查一些可能的筛选器驱动程序和模块的列表以获取详细信息。

  • 请联系模块、筛选器驱动程序或应用程序的供应商,检查更新。 应用任何可用的更新。
  • 配置筛选器驱动程序或关联的应用程序,使其不会干扰SQL Server工作负荷或操作。
  • 禁用筛选器驱动程序加载到系统中。
  • 将应用程序配置为不将特定模块加载到SQL Server进程中。
  • 在极少数情况下,可能需要删除模块或筛选器驱动程序及其关联的应用程序,以恢复SQL Server进程和系统的稳定性。

可能导致问题的筛选器驱动程序和模块列表

以下列表可帮助你识别可能导致性能问题的筛选器驱动程序和模块。 可以收集一组迭代诊断和跟踪数据来查找问题。

  • ENTAPI.DLL

    如果在运行 Microsoft SQL Server 的服务器上安装 McAfee VirusScan Enterprise,然后将此软件配置为监视SQL Server,则会将ENTAPI.DLL加载到SQL Server进程中。 加载此模块时,重要的 Win 32 API 也会在SQL Server进程中出现。 如果注意到此模块已加载到 SQL Server 进程中,请将 McAfee VirusScan Enterprise 配置为从各种高级监视(如缓冲区溢出保护)中排除 Sqlservr.exe。

  • HIPI.DLLHcSQL.DLLHcApi.DLLHcThe.DLL

    如果在与 SQL Server 相同的系统上安装 McAfee 主机入侵防护软件,这些 DLL 文件将加载到 SQL Server 进程中。 如果注意到此模块已加载到SQL Server进程中,请将 McAfee 主机入侵防护配置为从其监视列表中排除 Sqlservr.exe。

  • SOPHOS_DETOURED.DLLSWI_IFSLSP_64.DLLSOPHOS_DETOURED_x64.DLL

    如果在运行 SQL Server 的服务器上安装 Sophos 防病毒程序,这些 DLL 文件将加载到 SQL Server 进程中。 如果注意到此模块已加载到SQL Server进程中,可以配置AppInit_Dlls注册表子项,以避免将此模块加载到SQL Server进程中。

  • PIOLEDB.DLLPISDK.DLL

    如果使用 PI OLEDB 提供程序访问 PI 服务器中的数据,或者使用使用 PI SDK 的扩展存储过程,则这些 DLL 文件将加载到 SQL Server 进程中。 如果注意到这些模块已加载到SQL Server进程中,请联系这些模块的供应商,将 OLEDB 提供程序配置为进程外提供程序。 此配置有助于避免将这些模块加载到SQL Server进程中。

  • UMPPC*.DLLSCRIPTCONTROL*.DLL

    如果为 CrowdStrike 防病毒/终结点保护程序启用“附加用户模式数据防护”设置,则这些 DLL 文件将加载到SQL Server相关进程的地址空间。 在执行作业时,SQL Server 代理尝试创建新进程时,你可能会注意到失败。 尝试启动SQL Server Management Studio时可能会遇到失败。 你可能还会看到,SQL Server无法启动 SQLDumper.exe 以生成内存转储。 我们建议你联系 Crowdstrike 支持人员,并提供与你的问题相关的信息,并询问是否有可用的修补程序。

  • perfiCrcPerfMonMgr.DLL

    如果安装 Trend Micro OfficeScan 客户端,此 DLL 文件将加载到 SQL Server 进程中。 请参阅 Trend Micro Endpoint 产品的建议扫描排除列表中的软件发布者排除列表设置。

  • MFEBOPK.SYS

    此筛选器驱动程序用于 Buffer Overflow Protection McAfee VirusScan Enterprise 中的功能。 如果已启用此功能,你会注意到,sqlservr.exe 受 保护 Buffer Overflow Protection的进程列表之一。 如果在运行SQL Server的系统上具有此筛选器驱动程序,则必须执行“解决方法”部分中指定的操作。 有关详细信息,请参阅 高影响问题:服务器可能因多个问题而无响应

  • NLEMSQL64.SYSNLEMSQL.SYS

    此筛选器驱动程序由 NetLib Encryptionizer-Software 安装。 当此筛选器驱动程序安装在运行 SQL Server 的计算机上,并执行到网络共享的备份时,可能会遇到返回操作系统错误 1:错误函数的失败。 若要解决此问题,请联系软件供应商以获取筛选器驱动程序的更新。

  • MFETDIK.SYS

    此筛选器驱动程序用于 McAfee Anti-Virus Mini-Firewall McAfee VirusScan Enterprise 和 McAfee McShield 产品中的功能。 如果已启用此功能,你会注意到 sqlservr.exe 是该功能监视的进程列表之一 Anti-Virus 。 如果在运行SQL Server的系统上具有此筛选器驱动程序,则必须执行“解决方法”部分中指定的操作。 还可以考虑将SQL Server进程添加到防病毒配置中的低风险进程列表。

参考

第三方信息免责声明

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。

第三方联系人免责声明

Microsoft 提供第三方联系信息,帮助你查找有关本主题的其他信息。 该联系信息如有更改,恕不另行通知。 Microsoft 不保证第三方联系信息的准确性。

第三方信息和解决方案免责声明

本文档中的信息和解决方案代表在本文发布之时 Microsoft 公司对这些问题的最新观点。 此解决方案通过 Microsoft 或第三方供应商提供。 Microsoft 并不明确建议使用本文中述及的任何第三方供应商产品或第三方解决方案。 可能还存在其他一些本文未提及的第三方提供商或第三方解决方案。 因为 Microsoft 必须响应不断变化的市场形势,所以此信息不应解释为 Microsoft 一方的承诺。 Microsoft 不担保或认可由 Microsoft 或提到的任何第三方供应商提供的任何信息或任何解决方案的准确性。

Microsoft 不作任何担保,并拒绝所有明示、暗示或法定的表述、担保和条件。 这些条件包括但不限于有关任何服务、解决方案、产品或任何其他材料或信息的所有权、非侵权、令人满意的条件、适销性和针对特定用途的适用性的陈述、保证或条件。 在任何情况下,对于本文中提到的任何第三方解决方案,Microsoft 概不负责。