After every few days of faultless operation, the following information event pops up in my database server's event log:
Process 0:0:0 (0x890) Worker 0x5C55A0D8 appears to be non-yielding on Scheduler 0.
Thread creation time: 12945965386972. Approx Thread CPU Used: kernel 0 ms, user 0 ms.
Process Utilization 0%%. System Idle 98%%. Interval: 70427 ms.
The non-yielding worker process, whatever it is, causes the following connection timeout exception for all my applications' databases:
Exception message: Timeout expired. The timeout period elapsed prior to completion of
the operation or the server is not responding.
This message is repeated ad infinitum until I restart the SQL Service. However, the service won't stop, so I have had to forcefully kill the SQLServr.exe process, which is bad. Everything then starts up as normal and the service recovers.
How do I diagnose the cause of this problem?
You should start here - http://msdn.microsoft.com/en-us/library/cc917684.aspx under "Investigating a 17883 Error".