Diagnosing 17883, 17884, 17887, 17888 errors

Diagnosing 17883, 17884, 17887, 17888 errors

  • Comments 4

Have you ever seen an error like:

Process 51:0 (dbc) UMS Context 0x018DA930 appears to be non-yielding on Scheduler 0.

Or in SQL Server 2005:

Process 51:0:0 (0xdbc) Worker 0x036BA0E8 appears to be non-yielding on Scheduler 1. Thread creation time: 12764721496978. Approx Thread CPU Used: kernel 15 ms, user 171 ms. Process Utilization 0%. System Idle 99%. Interval: 325602683 ms.

If you really want to get into the guts of SQL Server (specifically the scheduling parts), there's a new whitepaper written by Robert Dorr in Product Support and Sameer Tejani in Product Development called 'How to Diagnose and Correct Errors 17883, 17884, 17887, and 17888'. You can download the paper at http://www.microsoft.com/technet/prodtechnol/sql/2005/diagandcorrecterrs.mspx

It provides great insight into the logic we have to detect 'hang' situations and what you can do to resolve them (and it might make your brain hurt).


Leave a Comment
  • Please add 4 and 5 and type the answer here:
  • Post
  • Just curious... Is there any facility to disable user-mode scheduling for an instance. I.e. Effectively setting all workers SwitchPreemptive for their lifetime?
  • The answer's no. Why would you want to do that? It would make things run slower because the whole reason for user-mode scheduling is to present the OS with a single thread per CPU from the SQL process - therefore having more threads would increase OS context switching and slow things down.
  • Hi Paul.

    Could you please verify the URL to the white paper, as it is currently broken?


  • I've updated the post with a link that shouldn't change. Thanks

Page 1 of 1 (4 items)