En muchas ocasiones me preguntan si existe alguna consulta la cual nos permite vía línea de comandos TSQL poder monitorear el consumo de CPU en nuestro SQL Server, y la respuesta a esto es SI.
Para poder hacer esto vamos a necesitar usar la DMV sys.dm_os_ring_buffers
Aquí les comparto un código TSQL que usando esta DMV les va a traer el consumo de CPU por minuto.
La dmv solo almacena los últimos 256 minutos con lo cual si quieren tener una historia van a necesitar un proceso que corra esta consulta y la inserte en alguna tabla de ustedes
declare @ts_now bigint
select @ts_now = ms_ticks from sys.dm_os_sys_info;
with C as
(
select
dateadd (ms, (y.[timestamp] -@ts_now), GETDATE()) as EventTime,
SQLProcessUtilization,
SystemIdle,
100 - SystemIdle - SQLProcessUtilization as OtherProcessUtilization
from (
select
record.value('(./Record/@id)[1]', 'int') as record_id,
record.value('(./Record/SchedulerMonitorEvent/SystemHealth/SystemIdle)[1]', 'int')
as SystemIdle,
record.value('(./Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization)[1]',
'int') as SQLProcessUtilization,
timestamp
from (
select timestamp, convert(xml, record) as record
from sys.dm_os_ring_buffers
where ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR'
and record like '%<SystemHealth>%') as x
) as y
)
select *
from c
Resultado

Notas adicionales
Este código es valido para SQL Server, Azure SQL y Azure MI