以下 SQL兼容 SQLServer2008R2, 但是不兼容SQLServer2005
- --查询所有正在运行中的SQL,按照cpu耗时倒序排列
- select top 10 (select top 1 text from sys.dm_exec_sql_text(dm_c.most_recent_sql_handle)) as sqltext
- ,dm_s.cpu_time
- ,dm_c.session_id
- ,*
- from Sys.dm_exec_connections as dm_c
- join Sys.dm_exec_sessions as dm_s on(dm_c.session_id = dm_s.session_id)
- where 1=1 --and dm_s.login_name = 'TCScenery'
- and dm_s.status = 'running'
- order by dm_s.cpu_time desc
- --查看sysprocesses中锁及产生锁的session的SQL信息
- WITH ProcessCTE(blocked) AS
- (
- SELECT blocked FROM sys.sysprocesses WHERE blocked>0
- )
- SELECT distinct a.*
- FROM (
- SELECT TEXT,AA.* FROM sys.sysprocesses AA
- CROSS APPLY sys.dm_exec_sql_text(AA.sql_handle)
- ) a
- JOIN ProcessCTE bucte WITH(NOLOCK)
- ON bucte.blocked=a.spid
- ORDER BY a.blocked
- --总耗CPU最多的前个SQL:
- SELECT TOP 20
- total_worker_time/1000 AS [总消耗CPU 时间(ms)],execution_count [运行次数],
- qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],
- last_execution_time AS [最后一次执行时间],max_worker_time /1000 AS [最大执行时间(ms)],
- SUBSTRING(qt.text,qs.statement_start_offset/2+1,
- (CASE WHEN qs.statement_end_offset = -1
- THEN DATALENGTH(qt.text)
- ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1)
- AS [使用CPU的语法], qt.text [完整语法],
- qt.dbid, dbname=db_name(qt.dbid),
- qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
- FROM sys.dm_exec_query_stats qs WITH(nolock)
- CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
- WHERE execution_count>1
- ORDER BY total_worker_time DESC
- --平均耗CPU最多的前个SQL:
- SELECT TOP 20
- total_worker_time/1000 AS [总消耗CPU 时间(ms)],execution_count [运行次数],
- qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],
- last_execution_time AS [最后一次执行时间],min_worker_time /1000 AS [最小执行时间(ms)],
- max_worker_time /1000 AS [最大执行时间(ms)],
- SUBSTRING(qt.text,qs.statement_start_offset/2+1,
- (CASE WHEN qs.statement_end_offset = -1
- THEN DATALENGTH(qt.text)
- ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1)
- AS [使用CPU的语法], qt.text [完整语法],
- qt.dbid, dbname=db_name(qt.dbid),
- qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
- FROM sys.dm_exec_query_stats qs WITH(nolock)
- CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
- WHERE execution_count>1
- ORDER BY (qs.total_worker_time/qs.execution_count/1000) DESC
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26435490/viewspace-1472724/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26435490/viewspace-1472724/