I assume due diligence here that you have confirmed that the processor is actually consumed by the SQL process (perfmon Product Category Counters will confirm this). Usually for such cases, you take a sample of the appropriate performance counters and compare them with the baseline set in normal operating conditions. Once you solve this problem, I recommend that you establish such a baseline for future comparisons.
You can find where exactly SQL is spending every single CPU cycle. But knowing where to look, you need to know a lot and experience. Is SQL 2005/2008 or 2000? Fortunately for 2005 and newer, there are a couple of shelf solutions. You already have a couple of good pointers here with John Samson's answer. I would like to add a recommendation for downloading and installing SQL Server Performance Reports . Some of these reports include top time or I / O requests, most data files used, etc., and you can quickly see where the problem is. The result is both numerical and graphic, so it is more useful for a beginner.
I would also recommend using the Adam Who Active script, although this is a bit more advanced.
Last but not least, I recommend that you download and read the white paper of the MS SQL Advisory Group on Performance Analysis: SQL 2005 Waits and Queues .
My recommendation is to also look at I / O. If you add load to a server that destroys a buffer pool (i.e., it needs so much data that it forces cached pages of data out of memory), the result will be a significant increase in CPU (it sounds amazing, but true). The culprit is usually a new query that scans a large table from end to end.
Remus Rusanu Jun 03 '09 at 18:01 2009-06-03 18:01
source share