@@CPU_BUSY (Transact-SQL)

APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

This function returns the amount of time that SQL Server has spent in active operation since its latest start. @@CPU_BUSY returns a result measured in CPU time increments, or "ticks." This value is cumulative for all CPUs, so it may exceed the actual elapsed time. To convert to microseconds, multiply by @@TIMETICKS.


If the time returned in @@CPU_BUSY or @@IO_BUSY exceeds 49 days (approximately) of cumulative CPU time, you may receive an arithmetic overflow warning. In that case, the value of the @@CPU_BUSY, @@IO_BUSY and @@IDLE variables are not accurate.

Topic link icon Transact-SQL Syntax Conventions



Return types



To see a report containing several SQL Server statistics, including CPU activity, run sp_monitor.


This example returns SQL Server CPU activity, as of the current date and time. The example converts one of the values to the float data type. This avoids arithmetic overflow issues when calculating a value in microseconds.

SELECT @@CPU_BUSY * CAST(@@TIMETICKS AS float) AS 'CPU microseconds',   
   GETDATE() AS 'As of' ;  

Here is the result set.

CPU microseconds As of
---------------- -----------------------
18406250         2006-12-05 17:00:50.600

See also

sys.dm_os_sys_info (Transact-SQL)
@@IDLE (Transact-SQL)
@@IO_BUSY (Transact-SQL)
sp_monitor (Transact-SQL)
System Statistical Functions (Transact-SQL)