--查阻塞语句selecttext,*from sys.dm_exec_requests er crossapply sys.dm_exec_sql_text(er.sql_handle)
1
2
查阻塞与锁
--查阻塞与锁SELECT t1.resource_type AS[锁类型], DB_NAME(resource_database_id)AS[数据库名],
t1.resource_associated_entity_id AS[阻塞资源对象],t1.resource_description as[资源描述信息], t1.request_mode AS[请求的锁],
t1.request_session_id AS[等待会话], t2.wait_duration_ms AS[等待时间],(SELECT[text]FROM sys.dm_exec_requests AS r WITH(NOLOCK)CROSSAPPLY sys.dm_exec_sql_text(r.[sql_handle])WHERE r.session_id = t1.request_session_id
)AS[等待会话执行的批SQL],(SELECT SUBSTRING(qt.[text],r.statement_start_offset/2,(CASEWHEN r.statement_end_offset =-1THENLEN(CONVERT(nvarchar(max), qt.[text]))*2ELSE r.statement_end_offset END)/2)FROM sys.dm_exec_requests AS r WITH(NOLOCK)CROSSAPPLY sys.dm_exec_sql_text(r.[sql_handle])AS qt
WHERE r.session_id = t1.request_session_id
)AS[等待会话执行的SQL],
t2.blocking_session_id AS[阻塞会话],(SELECT[text]FROM sys.sysprocesses AS p
CROSSAPPLY sys.dm_exec_sql_text(p.[sql_handle])WHERE p.spid = t2.blocking_session_id
)AS[阻塞会话执行的批SQL]FROM sys.dm_tran_locks AS t1 WITH(NOLOCK)INNERJOIN sys.dm_os_waiting_tasks AS t2 WITH(NOLOCK)ON t1.lock_owner_address = t2.resource_address OPTION(RECOMPILE);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
查询语句执行情况
SELECTTOP1000 t.hostname,
t.loginame,
percent_complete,[session_id],
der.[request_id],[start_time]AS'开始时间',
der.[status]AS'状态',[command]AS'命令',
dest.[text]AS'sql语句',
DB_NAME([database_id])AS'数据库名',[blocking_session_id]AS'正在阻塞其他会话的会话ID',[wait_type]AS'等待资源类型',[wait_time]AS'等待时间',[wait_resource]AS'等待的资源',[reads]AS'物理读次数',[writes]AS'写次数',[logical_reads]AS'逻辑读次数',[row_count]AS'返回结果行数',
t.hostname,
t.loginame
FROM sys.[dm_exec_requests]AS der
CROSSAPPLY sys.[dm_exec_sql_text](der.[sql_handle])AS dest
leftJOIN sys.sysprocesses t ON t.spid=der.session_id
WHERE[session_id]>50-- AND DB_NAME(der.[database_id]) = 'gposdb'ORDERBY[cpu_time]DESC