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 调用,例如
WaitForSingleObject
,Sleep
WriteFile
或ReadFile
返回。 或者,该线程可能无法由操作系统计划。 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。