MSSQLSERVER_17883

适用于:SQL Server

详细信息

属性
产品名称 SQL Server
事件 ID 17883
事件来源 MSSQLSERVER
组件 SQLEngine
符号名称 SRV_SCHEDULER_NONYIELDING
消息正文 计划程序 %ld 的进程 %ld:%ld:%ld (0x%lx)工作线程 0x%p 似乎无法完成。 线程创建时间: %I64d。 线程占用 CPU 的近似时间: 内核 %I64d 毫秒,用户 %I64d 毫秒。 进程使用率 %d%%。 系统空闲率 %d%%。 间隔: %I64d 毫秒。

说明

指示线程未在计划程序上生成可能存在问题。 此错误可能是由于 SQL Server 中的操作系统条件、环境问题或软件问题,或者 SQL Server 没有足够的周期来执行。 如果线程最终生成,则此错误可能会消失。

用户操作

如果查看错误消息信息,则会看到某些行为出现。 例如:

  • 如果用户模式时间快速攀升并继续执行此操作,则可能原因是 SQL Server 引擎中未正确生成绑定循环。

  • 如果内核模式时间快速攀升,则线程在操作系统中花费的时间最多,并且需要内核调试来确定此行为的根本原因。

  • 如果内核时间和用户时间没有快速增加,则线程可能会等待 API 调用,例如WaitForSingleObjectSleepWriteFileReadFile返回。 或者,该线程可能无法由操作系统计划。 API 停止条件通常需要内核模式调试来确定其根本原因。

  • 如果 System Idle % 较低且 Process Utilization % 较低,则 SQL Server 可能无法获得足够的 CPU 周期。 检查系统上其他应用程序的 CPU 使用率。 此外,请检查分页是否在系统中进行。 运行 SELECT * FROM sys.dm_os_ring_buffers 也可以提供更多详细信息。

  • 如果 kernel + user 时间较低但 Process Utilization % 较高,则错误条件可能指示抢占线程消耗所有 CPU(例如垃圾回收)。

将信息与系统利用率和空闲时间相结合,可以深入了解问题的性质。

若要了解生成此错误条件的检测逻辑和常见原因,请参阅 如何诊断和更正错误 17883、17884、17887 和 17888