along the same line....try using this script to tell your most expensive users for the past minute. It will review the processes and tell you who is using the most CPU over the past minute.
create procedure [dbo].[cspWhoCPU]
as
Select d.name as 'DatabaseName', spid, p.status, cmd,
p.loginame, nt_username, hostname, program_name,
cpu, physical_io, memusage, blocked
into ##FirstLook
from master.sys.sysprocesses p (nolock)
join master.sys.sysdatabases d (nolock)
on p.dbid = d.dbid
order by D.name, nt_username
waitfor delay '00:01:00'
Select d.name as 'DatabaseName', spid, p.status, cmd,
p.loginame, nt_username, hostname, program_name,
cpu, physical_io, memusage, blocked
into ##SecondLook
from master.sys.sysprocesses p (nolock)
join master.sys.sysdatabases d (nolock)
on p.dbid = d.dbid
order by D.name, nt_username
Selectb.DatabaseName, b.spid, b.status, b.loginame,
b.nt_UserName, b.hostName, b.Program_name, b.spid,
B.cpu - isnull(A.cpu,0) as MinuteCPU,
b.cpu as TotCPU,
b.Physical_io - isnull(a.physical_io,0) as MinuteIO,
b.physical_IO as totIO,
b.memusage - isnull(a.memusage,0) as MinuteMem,
b.memusage as TotMem, b.blocked as BlkBy
from ##firstLook a
right outer join ##secondLook b
on a.spid = b.spid
and a.databasename = b.databaseName
and a.loginame = b.loginame
order by 9 desc,11 desc,13 desc
--select * from ##firstLook
--select * from ##secondLook
drop table ##firstLook
drop table ##SecondLook