sqlserver-查询当前正在执行的语句

当服务器卡慢时,可通过以下代码排查sys.dm_exec_requestssys.sysprocessessys.dm_exec_sql_text

/*
sys.dm_exec_requests 返回有关在 SQL Server 中正在执行的每个请求的信息
sys.sysprocesses 包含有关在 SQL Server 实例上运行的进程的信息。 这些进程可以是客户端进程或系统进程
sys.dm_exec_sql_text  返回由指定的 sql_handle标识的 SQL 批处理的文本
**/
select  
[spid] = session_id 
,ecid 
,[database] = db_name(sp.dbid) 
,[user] = nt_username 
,[status] = er.status 
,[wait] = wait_type 
,[individual query] = substring(qt.text,er.statement_start_offset / 2, ( case when er.statement_end_offset = -1 then len(convert(nvarchar(max), qt.text))* 2  else er.statement_end_offset end - er.statement_start_offset ) / 2) 
,[parent query] = qt.text 
,program = program_name 
,hostname 
,nt_domain 
,start_time
from    sys.dm_exec_requests er
inner join sys.sysprocesses sp 
on er.session_id = sp.spid
cross apply sys.dm_exec_sql_text(er.sql_handle) as qt
where er.session_id > 50 
and session_id not in ( @@spid ) 
order by   1 ,2

本文从CSDN(点击查看原文)转载而来。不代表烟海拾贝立场,如若转载,请注明出处:https://somirror.com/5417.html

(0)
上一篇 2023-02-23 11:02
下一篇 2023-03-16 09:40

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注