当某些模块加载到 SQL Server 的性能和一致性问题地址空间

症状

当某些模块被加载到 Microsoft SQL Server 进程地址空间 (Sqlservr.exe) 时,您可能会遇到下列症状:

  • 各种与挂起相关的错误消息和条件 (例如,SQL Server 调度消息如 17883,应用程序超时消息,严重阻塞 SQL Server 内) 的报告

  • 即使负载的并发量不可过多的 SQL Server 响应速度很慢

  • 例外日期 (例如,访问冲突)、 数据库一致性有关的错误消息、 肯定消息或进程意外的终止

  • 100%的 CPU 使用率和在 SQL Server 中使用内存中的 OLTP 表时的长时间数据库恢复时间

原因

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

解决方法

警告此替代方法可能导致计算机或网络更易于受到恶意用户或恶意软件 (如病毒) 的攻击。我们不建议采用这种解决方法,但提供此信息,以便您可以自己决定实施此替代方法。使用此替代方法需要您自担风险。

要变通解决此问题,请执行以下步骤︰

  1. 确定加载到 SQL Server 进程的模块和程序导致了此问题。

  2. 针对问题的模块执行下列操作:

    1. 配置应用程序无法将特定模块加载到 SQL Server 进程。

    2. 与模块或应用程序检查更新的供应商联系。应用任何可用的更新。

    3. 在某些罕见的情况下,您可能必须删除模块和其相关的软件来还原 SQL Server 过程和系统的稳定性。

    注意:在某些情况下,您可能需要执行所有这些操作。

详细信息

Microsoft 客户支持服务 (CSS) 的工作组确定了以下模块可能会导致"症状"一节中提到的症状。如发现新问题时,将更新此列表。此列表可用于帮助您确定"解决方案"一节中提到的过程。此过程通常涉及问题的持续时间内重复组的诊断和跟踪数据的集合。

以下模块加载到 SQL Server 进程时可能导致性能和稳定性问题:

  • ENTAPI.DLL
    ENTAPI。DLL 被加载到 SQL Server 进程,如果运行 Microsoft SQL Server,在服务器上安装 McAfee VirusScan 企业,然后您配置此软件以监视 SQL Server。加载此模块时,都还在 SQL Server 进程 detoured 重要赢得 32 Api。如果您发现此模块被加载到 SQL Server 进程,配置 McAfee VirusScan 企业排除在各种高级监视,例如缓冲区溢出保护 SQL Server (Sqlservr.exe)。

  • HIPI.DLL, HcSQL.dll, HcApi.dll, HcThe.dll
    如果您在与 SQL Server 相同的系统上安装 McAfee 主机入侵防护软件到 SQL Server 进程加载这些 DLL 文件。如果您发现此模块被加载到 SQL Server 进程,配置 McAfee 主机入侵防护,可以将 SQL Server (Sqlservr.exe) 排除其监视的列表。

  • SOPHOS_DETOURED。DLL 和 SOPHOS_DETOURED_x64。Dll 文件, SWI_IFSLSP_64.dll
    这些 DLL 文件都加载到 SQL Server 进程正在运行 SQL Server 的服务器上安装 Sophos 防病毒程序。如果您发现此模块被加载到 SQL Server 进程,您可以配置 AppInit_Dlls注册表子项,以避免将本模块加载到 SQL Server 进程。

  • PIOLEDB。DLL 和 PISDK。DLL
    这些 DLL 文件载入 SQL Server 进程如果 PI OLEDB 提供程序用于从 PI 服务器访问数据或使用使用 PI SDK 的扩展存储的过程。如果您注意到这些模块被加载到 SQL Server 进程,与这些模块的供应商联系,以将 OLEDB 提供程序配置为进程外提供。这种配置可以帮助避免将这些模块加载到 SQL Server 进程的需要。

有关如何设置 Sqlservr.exe 的排除策略在本文中讨论的应用程序软件的详细信息,请参阅产品手册或与软件供应商联系。

下表提供有关产品或自动检查此条件和对规则进行评估所依据的 SQL Server 版本的 SQL Server 实例中的工具的详细信息。

规则的软件

规则标题

规则说明

对规则进行评估所依据的产品版本

系统中心顾问

模块加载到 SQL Server 可能会导致服务器稳定性问题

系统中心顾问确定本文中提及的 Dll 列表是否已加载到 SQL Server 进程。查看顾问警报"收集信息"一节中提供的信息,然后在文章中进行讨论所需的配置更改。

SQL Server 2008
SQL Server 2008 R2
SQL Server 2012

SQL Server 2008 R2 最佳实践分析器 (SQL Server 2008 R2 BPA)

被截获的 Windows API 调用

SQL Server 2008 R2 最佳实践分析器 (SQL Server 2008 R2 BPA) 提供一个规则来检测加载的模块来支持缓冲区溢出保护 SQL Server 内部。如果您运行 BPA 工具,并且您会收到一个警告消息,标题为"引擎-Windows API 调用截获,"在 SQL Server 内部加载的模块来支持缓冲区溢出保护。BPA 检测到此通过查找具有类似于"%entapi.dll%"为 sys.dm_os_loaded_modules 动态管理视图 (DMV) 中找到的名称的所有模块。

SQL Server 2008
SQL Server 2008 R2
SQL Server 2012

SQL Server 2012年最佳实践分析器 (SQL Server 2012 BPA)

被截获的 Windows API 调用

SQL Server 2012 BPA 提供规则确定本文中提及的 Dll 列表是否已加载到 SQL Server 进程。如果您运行 BPA 工具,您收到一条警告消息,标题为"引擎-Windows API 调用截获"检查"问题"的 BPA 的语句中提供的信息,在文章中进行讨论所需的配置更改。

SQL Server 2012


本文讨论的第三方产品是由与 Microsoft 无关的公司生产的。Microsoft 不做这些产品的任何担保、默示或其他有关的性能或可靠性。

本文档中的解决方案和信息表示这些问题发布日期的当前视图的微软公司。此解决方案可通过 Microsoft 或第三方提供程序。Microsoft 不特别建议任何第三方提供商或第三方解决方案,这样描述这篇文章。可能还存在本文未介绍的其他第三方提供商或第三方解决方案。因为 Microsoft 必须响应不断变化的市场条件,此信息应被解释为承诺由 Microsoft。Microsoft 不能保证或背书或任何由 Microsoft 或任何提到第三方提供商提供的任何的解决方案信息的准确性。

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

参考资料

有关 SQL Server 支持策略的详细信息,请单击下面的文章编号,以转到 Microsoft 知识库中相应的文章:

在 SQL Server 中不支持第三方迂回的方式或类似技术的使用有关 SQL Server 进程的详细信息,请单击下面的文章编号,以转到 Microsoft 知识库中相应的文章:



198891如何运行 SQL Server 进程之外的基于 DLL 的 COM 对象

243428如何移动扩展进程外的存储的过程

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×