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

当服务器卡慢时,可通过以下代码排查

sys.dm_exec_requests

https://learn.microsoft.com/zh-cn/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-requests-transact-sql?view=sql-server-ver16

sys.sysprocesses

https://learn.microsoft.com/zh-cn/sql/relational-databases/system-compatibility-views/sys-sysprocesses-transact-sql?view=sql-server-ver16

sys.dm_exec_sql_text

https://learn.microsoft.com/zh-cn/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-sql-text-transact-sql?view=sql-server-ver16

/*
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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jackie_Mina

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值