sql server 常用监控词句

1、获取等待要执行的sql(前10个最耗CPU时间的会话)

SELECT TOP 10
  [session_id],
  [request_id],
  [start_time] AS '开始时间',
  [status] AS '状态',
  [command] AS '命令',
  dest.[text] AS 'sql语句', 
  DB_NAME([database_id]) AS '数据库名',
  [blocking_session_id] AS '正在阻塞其他会话的会话ID',
  der.[wait_type] AS '等待资源类型',
  [wait_time] AS '等待时间',
  [wait_resource] AS '等待的资源',
  [dows].[waiting_tasks_count] AS '当前正在进行等待的任务数',
  [reads] AS '物理读次数',
  [writes] AS '写次数',
  [logical_reads] AS '逻辑读次数',
  [row_count] AS '返回结果行数'
  FROM sys.[dm_exec_requests] AS der 
  INNER JOIN [sys].[dm_os_wait_stats] AS dows 
  ON der.[wait_type]=[dows].[wait_type]
  CROSS APPLY 
  sys.[dm_exec_sql_text](der.[sql_handle]) AS dest 
  WHERE [session_id]>50  
  ORDER BY [cpu_time] DESC

2、查看CPU占用情况

SELECT TOP 10
total_worker_time/execution_count AS avg_cpu_cost, plan_handle,
execution_count,
(SELECT SUBSTRING(text, statement_start_offset/2 + 1,
(CASE WHEN statement_end_offset = -1
THEN LEN(CONVERT(nvarchar(max), text)) * 2
ELSE statement_end_offset
END - statement_start_offset)/2)
FROM sys.dm_exec_sql_text(sql_handle)) AS query_text
FROM sys.dm_exec_query_stats
ORDER BY [avg_cpu_cost] DESC

3、查看连接用户数

select hostprocess,program_name,nt_domain,nt_username,loginame,login_time,last_batch from master..sysprocesses

4、查看当前已被锁住的表

select    
    request_session_id spid,   
    OBJECT_NAME(resource_associated_entity_id) tableName    
from    
    sys.dm_tran_locks   
where    
    resource_type='OBJECT'

  结束死锁

kill spid
kill 156
sqlserver | 2018-02-18 02:24:17