worker thread
declare @session_limit int
declare @current_worker_cnt int
declare @session_current int
declare @max_worker_threads int
select @session_limit = cast(value_in_use as int) from sys.configurations where name = 'user connections'
select @max_worker_threads = cast(value_in_use as int) from sys.configurations where name = 'max worker threads'
select @session_current = count(*) from sys.dm_exec_sessions
select @current_worker_cnt = count(*) from sys.dm_os_workers
select
@session_limit session_limit
, @session_current current_session_cnt
, @max_worker_threads max_worker_thread
, @current_worker_cnt current_worker_cnt
, s.scheduler_id
, quantum_used
, is_preemptive
, context_switch_count
, state
, w.last_wait_type
, processor_group
, tasks_processed_count
, w.task_address
, t.session_id
, se.original_login_name
, se.host_name
, se.program_name
, r.command
, r.cpu_time
, r.total_elapsed_time
, r.reads
, r.writes
, r.logical_reads
, r.sql_handle
, r.query_hash
, q.dbid
, q.text
from sys.dm_os_workers w
join sys.dm_os_schedulers s
on w.scheduler_address = s.scheduler_address
left join sys.dm_os_tasks t
on t.task_address = w.task_address
left join sys.dm_exec_sessions se
on t.session_id = se.session_id
left join sys.dm_exec_requests r
on se.session_id = r.session_id
outer apply
(
select top 1 * from sys.dm_exec_sql_text (sql_handle)
) q
where r.command is not null
order by quantum_used desc