--查阻塞语句selecttext,*from sys.dm_exec_requests er crossapply sys.dm_exec_sql_text(er.sql_handle)
查阻塞与锁
--查阻塞与锁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);
查询语句执行情况
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
查询执行计划
--查询执行计划SELECTtop10
s.[session_id],
r.[start_time],
DATEDIFF(SECOND,r.start_time,GETDATE())AS elapsed_seconds,
r.[status]AS RequestStatus,
DB_NAME(r.database_id)AS DatabaseName,
r.[reads],
r.[writes],
r.[logical_reads],
r.cpu_time,
r.total_elapsed_time,
s.[status]AS SessionStatus,
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-
r.statement_start_offset)/2)AS ExecutingSQL,
qp.query_plan
FROM sys.dm_exec_requests (nolock) r
INNERJOIN sys.dm_exec_sessions (nolock) s
ON r.session_id=s.session_id
LEFTJOIN sys.dm_exec_connections (nolock) c
ON c.session_id=s.session_id
CROSSAPPLY sys.dm_exec_sql_text(r.sql_handle)as qt
CROSSAPPLY sys.dm_exec_query_plan(r.plan_handle)as qp
orderby3desc